Saz*_*aze 6 iphone cocoa-touch uitableview uitextfield
我有一个UITable包含一些海关UITableCells.这些单元格包含一些UILabel和一个UITextField.该表的数据源来自主控制器的属性.(此控制器也是表的委托和dataSource).
这是UI的简化屏幕截图:

现在,当用户编辑其中一个UITextField时,我需要"动态"更新所有UILabel的内容.为此,我正在收听UITextField级别的"编辑已更改"事件.这会触发以下操作:
- (IBAction) editChangeHandler: (id) sender {
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[[delegate.viewController.myDataSourceArray objectAtIndex:self.rowIndex] setANumber: [theTextField.text intValue]];
[delegate.viewController reloadRows];
}
Run Code Online (Sandbox Code Playgroud)
viewController中的reloadRows方法如下:
- (void) reloadRows {
NSLog(@"called reloadRows");
//perform some calculations on the data source objects here...
[theUITable reloadData];
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,每当用户更改字段中的值时,都会成功调用reloadRows方法,因此显然是reloadData,但它也会导致键盘被解除.
因此,最后,用户只能在键盘解除并重新加载表格之前编辑TextField时触摸一个键.
有人知道解决方案或遇到过同样的问题吗?
您可以根据需要有选择地修改行,而不是更新整个表(这样做是更新您当前正在使用的单元格,重置其状态)。
看着:
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
Run Code Online (Sandbox Code Playgroud)
此外,您可以通过以下方式获取单元格来直接编辑这些单元格:
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)
如果您不想重建这些单元格。
| 归档时间: |
|
| 查看次数: |
2029 次 |
| 最近记录: |