Ios 如何将UITextField正确添加到UITableViewCell

Ios 如何将UITextField正确添加到UITableViewCell,ios,swift,xcode6,storyboard,uitextfield,Ios,Swift,Xcode6,Storyboard,Uitextfield,从我的理解来看,我试图做的应该是非常直截了当的,但我似乎在这方面遇到了一些麻烦 我正在尝试将UITextField添加到我的故事板中的UITableViewCell中,但是它只允许我将文本字段作为UIView的子级放置,而后者则放置在表视图单元格中 即: 我在我的Swift ViewController中创建了我的IBOutlet,并添加了以下功能,使键盘显示在触摸屏上 override func tableView(tableView: UITableView, didSelectRowAtI

从我的理解来看,我试图做的应该是非常直截了当的,但我似乎在这方面遇到了一些麻烦

我正在尝试将UITextField添加到我的故事板中的UITableViewCell中,但是它只允许我将文本字段作为UIView的子级放置,而后者则放置在表视图单元格中

即:

我在我的Swift ViewController中创建了我的IBOutlet,并添加了以下功能,使键盘显示在触摸屏上

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {  
    self.nameTextField.becomeFirstResponder()  
} 
但当我运行这个程序时,单元格会对触摸做出响应,但就好像文本视图总是隐藏的,永远不会启用或成为第一响应者。我认为这与UIView有关,但是我没有成功地将文本视图直接放在表视图单元格中

如果有人知道我做错了什么,我会非常感谢你的帮助


谢谢大家!

创建自定义UITableView单元格作为xib,并为此创建相应的.swift文件。将textField添加到单元格中,并在custom.swift类中为textField创建IBOutlet。确保在此xib中设置了约束

在ViewController.swift类中,使func tableView(cellforrowatinexpath)返回自定义单元格

您不必设置firstResponder,因为默认情况下键盘会打开。除非你的手机基本上只是一个文本字段,否则让didSelectRowAtIndexPath总是显示键盘似乎是不明智的。如果由于某种原因,该单元始终执行触摸操作,则使用didSelectRowAtIndexPath,但使用

tableView.cellForRowAtIndexPath(indexPath).textField.becomeFirstResponder()
将textField delegate设置为自定义单元格,并将其添加到CustomTableViewCell.swift中,以在按下返回键时关闭键盘:

func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return false
}
旁注:除非您取消选择使用硬件键盘的选项,否则键盘不会显示在模拟器中

以下是一个我认为您正在努力实现的示例项目:

使用此方法可获得与以前相同的结果。仍然有一个UIContentView作为自定义UITableViewCell的子元素,以体现其价值。func tableView(cellForRowAtIndexPath)返回nil,但返回“return tableView.cellForRowAtIndexPath(indexath)!”这是我应该做其他事情的地方吗?我添加了一个指向示例项目的链接。希望这能为我之前所说的提供一些见解。我能够实现(我希望)您想要的,而无需指定第一响应者。谢谢,我第一次没有正确地实例化.xib。我现在开始工作了:)太好了!很高兴我能帮忙!
func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return false
}