【问题标题】:How to properly add UITextField to UITableViewCell如何正确地将 UITextField 添加到 UITableViewCell
【发布时间】:2015-10-24 17:16:23
【问题描述】:

根据我的理解,我正在尝试做的事情应该很简单,但我似乎对此有些麻烦。

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

即:

UITableViewCell
|__UIView
   |__UITextView

我在我的 Swift ViewController 中创建了我的 IBOutlet 并添加了以下函数以使键盘出现在触摸时

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {  
    self.nameTextField.becomeFirstResponder()  
} 

当我运行它时,单元格会响应触摸,但是好像文本视图总是隐藏并且永远不会启用或成为FirstResponder。我假设它与 UIView 的方式有关,但是我没有成功将文本视图直接放在表格视图单元格中。

如果有人知道我做错了什么,我将不胜感激,

谢谢!

【问题讨论】:

    标签: ios swift xcode6 storyboard uitextfield


    【解决方案1】:

    创建一个自定义 UITableView 单元格作为 xib 并为此创建相应的 .swift 文件。在单元格中添加一个 textField 并为自定义 .swift 类中的 textField 创建一个 IBOutlet。确保您的约束已在此 xib 中设置。

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

    您不必设置 firstResponder,因为键盘会默认出现。除非您的单元格基本上只是一个文本字段,否则让 didSelectRowAtIndexPath 始终调出键盘似乎并不明智。如果由于某种原因单元格总是执行触摸操作,则使用 didSelectRowAtIndexPath,但使用

    tableView.cellForRowAtIndexPath(indexPath).textField.becomeFirstResponder()
    

    将 textField 委托设置为自定义单元格并将其添加到 CustomTableViewCell.swift 以在按下返回键时关闭键盘:

    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return false
    }
    

    附注:除非您取消选择使用硬件键盘的选项,否则键盘不会显示在模拟器中。

    这是一个示例项目,我认为您正在努力实现: https://mega.nz/#!B1ASDIQT!8-diyv_Fd2H66nb08gs3ObzlQqVHKUUIs4U_BbI6s4s

    【讨论】:

    • 使用此方法提供与以前相同的结果。对于它的价值,仍然有一个 UIContentView 作为自定义 UITableViewCell 的子项。 func tableView(cellForRowAtIndexPath) 返回 nil 尽管这个“return tableView.cellForRowAtIndexPath(indexPath)!”这是我应该做其他事情的地方吗?
    • 我添加了一个示例项目的链接。希望这可以让您深入了解我之前所说的内容。我能够在不分配 firstResponder 的情况下实现(我希望)您正在寻找的东西。
    • 谢谢,我第一次没有正确实例化 .xib。我现在开始工作了:)
    • 太棒了!很高兴我能帮上忙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    相关资源
    最近更新 更多