我'm trying to do that for a couple of days now, and after reading tons of messages of people trying to do that too, I'仍然无法在我的某些 UITableViewCells
中完全正常工作 UITextField
,就像在这个例子中一样:
要么我的表单工作,但文本不可见(虽然我将其颜色设置为蓝色),当我点击它时键盘在场上,我无法正确实现键盘事件 . 我尝试了一堆来自Apple的示例(主要是 UICatalog
,其中有一个类似的控件),但它仍然无法正常工作 .
有人可以帮助我(以及所有试图实现这种控制的人)并在 UITableViewCell
中发布 UITextField
的简单实现,这样可以正常工作吗?
12 回答
试试吧 . 对我来说就像一个魅力(在iPhone设备上) . 我将此代码用于登录屏幕一次 . 我将表视图配置为包含两个部分 . 你当然可以摆脱部分条件 .
结果如下所示:
Here is a solution that looks good under iOS6/7/8/9 .
Update 2016-06-10: this still works with iOS 9.3.3
Thanks for all your support, this is now on CocoaPods/Carthage/SPM at https://github.com/fulldecent/FDTextFieldTableViewCell
基本上我们采取股票
UITableViewCellStyleValue1
并钉一个UITextField
应该是detailTextLabel
. 这为我们提供了所有场景的自动放置:iOS6 / 7/8/9,iPhone / iPad,图像/无图像,附件/无附件,纵向/横向,1x / 2x / 3x .注意:这是使用storyboard与名为"word"的
UITableViewCellStyleValue1
类型单元格 .以下是我如何实现这一目标:
TextFormCell.h
TextFormCell.m
它可能看起来有点冗长,但它的确有效!
别忘了设置代表!
试试这个吧 . 它也可以处理滚动,您可以重复使用单元格,而无需删除之前添加的子视图 .
这应该不难 . 为表创建单元格时,将UITextField对象添加到单元格的内容视图中
将UITextField的委托设置为self(即viewcontroller)为文本字段指定标记,以便您可以识别在委托方法中编辑的文本字段 . 当用户点击文本字段时,键盘应弹出 . 我让它像这样工作 . 希望能帮助到你 .
每次我的细胞出现时,我都会通过调用一个运行
[cell.contentView bringSubviewToFront:textField]
的方法避免这种情况,但后来我发现了这个相对简单的技术:似乎没有相同的背景覆盖问题,并且它自己(有点)对齐 . 此外,textLabel自动截断以避免溢出(或在其下),这很方便 .
在Swift 3中的UITableViewCell中的UITextField
详情
Xcode 8.2.1,Swift 3
任务
在UITableViewCell中创建UITextField并将UITextField编辑功能委托给ViewController
完整示例代码
结果
我遇到了同样的问题 . 似乎设置
cell.textlabel.text
属性会将UILabel带到单元格的contentView的前面 . 设置textLabel.text
后添加textView,或者(如果不可能)调用:我真的很难在iPad上完成这项任务,文本字段在UITableView中显示为不可见,整个行在获得焦点时变为蓝色 .
最终对我有用的是Apple的Table View Programming Guide中描述的技术"The Technique for Static Row Content" . 我将标签和textField放在视图的NIB中的UITableViewCell中,然后通过
cellForRowAtIndexPath:
中的插座拉出该单元格 . 生成的代码比UICatalog更整洁 .以下是我认为正确的方式 . 当我测试它时,它适用于Ipad和Iphone . 我们必须通过对uitableviewcell进行分类来创建我们自己的customCells:
从interfaceBuilder开始...创建一个新的UIViewcontroller调用它customCell(志愿者为你的那里的xib)确保customCell是uitableviewcell的子类
现在擦除所有视图并创建一个视图使其成为单个单元格的大小 . 使该视图子类为customcell . 现在创建另外两个视图(复制第一个) .
转到您的连接检查器,找到2个IBOutlet,您现在可以连接到这些视图 .
-backgroundView -SelectedBackground
将这些连接到您刚刚复制的最后两个视图,不要担心它们 . 第一个扩展customCell的视图,将你的标签和uitextfield放在其中 . 进入customCell.h并连接你的标签和文本域 . 将此视图的高度设置为75(所有单元格的高度)全部完成 .
在customCell.m文件中,确保构造函数看起来像这样:
现在创建一个UITableViewcontroller,在这个方法中使用customCell类,如下所示:
}
这是
UITableViewCell
的一个drop-in子类,用可编辑的UITextField
替换 detailTextLabel (或者在UITableViewCellStyleDefault
的情况下,替换 textLabel ) . 这样做的好处是它允许您重复使用所有熟悉的UITableViewCellStyles,accessoryViews等,现在细节是可编辑的!简单易用 - 只需像以前一样创建您的单元格,但现在使用 cell.textField 而不是 cell.detailTextLabel (如果是
UITableViewCellStyleDefault
则使用 cell.textLabel ) . 例如FD的答案启发并改进了它
对于UITableViewCell内的多个UITextfield上的下一个/返回事件,我在故事板中使用了UITextField .
要从文本字段中获取文本 -