如何在目标c中重新加载后更改单元格的值?

时间:2010-12-07 13:06:38

标签: iphone uitableview

有没有办法在加载后更改单元格的值?实际上我在表中有一个文本字段,插入相同的值后,我需要对textfield值进行一些数值运算,值计算器需要显示在下一个单元格中的标签上。

那么我怎么能得到相同的结果?任何想法?

提前致谢。

2 个答案:

答案 0 :(得分:3)

有几种方法可以更新UITableView中的单元格。

1)调用表格视图方法reloadRowsAtIndexPaths:withRowAnimation:。这将触发对委托方法tableView:cellForRowAtIndexPath:的调用。如果您有要更新的数据源,这将是更新单元格的好方法。

NSIndexPath *indexPathOfUpdatedCell = ...
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPathOfUpdatedCell] withRowAnimation:UITableViewRowAnimationFade];

2)也可以直接更新单元格。您可以使用cellForRowAtIndexPath:

NSIndexPath *indexPathOfUpdatedCell = ...
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPathOfUpdatedCell];
cell.textLabel.text = @"new value";

要为特定行和部分创建索引路径,可以使用indexPathForRow:inSection

NSUInteger row = ...
NSUInteger section = ...
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:section];

答案 1 :(得分:1)

对于您要做的事情,最好的办法是让您的视图控制器为<UITextFieldDelegate>,将您的单元格的文本字段委托设置为self,然后实现textFieldDidEndEditing:委托方法。

更改您的接口文件以采用协议

@interface YourViewController : UIViewController <UITextFieldDelegate>

然后将视图控制器设置为相关UITextField的委托...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ...
    yourCustomCell.yourTextField.delegate = self
}

最后实施

- (void) textFieldDidEndEditing:(UITextField *)textField.

每次用户完成UITextField编辑时都会调用此方法,并且当它传递对它的引用时,您可以访问它的值,执行您可能需要的任何验证并将其分配回文本字段。