Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone-tableViewCell中的文本字段-从屏幕上滚动可清除该值_Iphone_Uitableview_Uitextfield - Fatal编程技术网

iPhone-tableViewCell中的文本字段-从屏幕上滚动可清除该值

iPhone-tableViewCell中的文本字段-从屏幕上滚动可清除该值,iphone,uitableview,uitextfield,Iphone,Uitableview,Uitextfield,我在tableViewCell中有一个文本字段。我最近注意到,如果我在文本框中输入一个值,然后将单元格从屏幕上滚动,文本框中的值就会消失 我有防范措施。如果没有UIKeyboard,则tableView无法滚动到足够远的位置,无法重新绘制单元格。但是,有些用户不使用键盘上的“完成”键使键盘离开,而是向上滚动表格,从而中断程序 如果用户试图滚动tableView,有没有办法立即将textField字符串存储到变量中,或者阻止tableView滚动,或者让键盘消失 我没有用于此视图的NIB文件,它是

我在tableViewCell中有一个文本字段。我最近注意到,如果我在文本框中输入一个值,然后将单元格从屏幕上滚动,文本框中的值就会消失

我有防范措施。如果没有UIKeyboard,则tableView无法滚动到足够远的位置,无法重新绘制单元格。但是,有些用户不使用键盘上的“完成”键使键盘离开,而是向上滚动表格,从而中断程序

如果用户试图滚动tableView,有没有办法立即将textField字符串存储到变量中,或者阻止tableView滚动,或者让键盘消失


我没有用于此视图的NIB文件,它是一个可编程的tableViewController,因此我无法在Interface Builder中使用不可见的自定义按钮执行任何操作,正如有关StackOverflow的其他问题中所建议的那样。

是否实例化CellForRowatineXpath::方法中的文本字段?如果是这样,它可能会在每次单元格滚动到视图时重新实例化


您应该在控制器上保存对文本字段的引用,并在cellForRowAtIndexPath:中重新使用它。

这个问题的答案是实现ScrollView委托方法WillBeginDraging。UITableView继承自UIScrollView

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
       [textField resignFirstResponder];
}
这会在tableView开始滚动时立即关闭键盘

通过这种继承,还可以防止tableView滚动,句号。将scrollEnabled属性设置为NO,a la

self.tableView.scrollEnabled = NO;

您应该将创建的
NSTextField
的委托设置为控制器,然后在控制器中实现
textField:shouldChangeCharactersRange:replacementString:
,以便在文本字段中的文本更改时随时通知您

文本更改时,将更改的文本存储在控制器的属性中

cellforrowatinexpath
中创建
NSTextField
时,请设置该属性的值


记住,使用Cocoa时,您需要将模型数据与视图分开。

我使用case语句块将textField添加到第0节第2行。textField在标题中声明为指针,因此我可以使用myTextField.text访问属性。这有用吗?我不太明白。您是说在cellForRowAtIndexPath方法中有一个case语句,确定您是否在第0节第2行,如果是,它会添加文本字段?如果是,您在哪里调用[[UITextField alloc]init]?如果它也在cellForRowAtIndexPath方法中,那么每次该行滚动到视图中(并且调用cellForRowAtIndexPath)时,您可能都在初始化文本字段。尝试在loadView或控制器的主初始化方法中初始化textfield。但是当textfield向上滚动并删除值时会发生什么情况。实例变量是否也会丢失其值?否,当委托调用textField:ShouldChangeCharactersRange:replacementString时,应将该字符串从文本字段复制到实例属性中,以便在删除UITableViewCell后该字符串有效。