首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地将UITextField添加到UITableViewCell

如何正确地将UITextField添加到UITableViewCell
EN

Stack Overflow用户
提问于 2015-08-02 14:48:34
回答 1查看 1.2K关注 0票数 2

从我的理解来看,我想要做的事情应该是非常直接的,但我似乎在这方面遇到了一些困难。

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

ie:

代码语言:javascript
复制
UITableViewCell
|__UIView
   |__UITextView

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

代码语言:javascript
复制
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {  
    self.nameTextField.becomeFirstResponder()  
} 

不过,当我运行此操作时,单元格会响应触摸,但就好像文本视图总是隐藏在一起,永远不会启用或becomeFirstResponder。我假定这与UIView有关,但是我没有成功地将文本视图直接放置在表视图单元格中。

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

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-02 16:11:09

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

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

您不必设置firstResponder,因为默认情况下键盘会出现。除非您的手机基本上只是一个textField,否则让didSelectRowAtIndexPath总是打开键盘似乎不明智。如果由于某些原因,单元格总是采取触摸操作,则使用didSelectRowAtIndexPath,但请使用

代码语言:javascript
复制
tableView.cellForRowAtIndexPath(indexPath).textField.becomeFirstResponder()

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

代码语言:javascript
复制
func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return false
}

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

下面是一个我认为您正在尝试实现的示例项目:BbI6s4s

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31773054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档