我正在使用tabbar应用程序。也许这是一个微不足道的问题,但我只想简单地替换UITableViewCell的labelvalue。我从TextView获取NSString,它嵌入在UITableView“输入”中。我想要修改的单元格位于“输入”视图的父视图中。
修改应在保存功能中进行
- (void)save:(id)sender
{
//Get the needed string
DescriptionViewCell *cell = (DescriptionViewCell *) [descriptionTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
NSString *temp = [[NSString alloc]initWithString:[cell.textView text]];
//Access parentview
FindTableViewController *rootController = [self.navigationController.viewControllers objectAtIndex:1];
UITableViewCell *descriptionCell = [rootController.findUITable cellForRowAtIndexPath: [NSIndexPath indexPathForRow:0 inSection: 1]];
//replace label string
descriptionCell.textLabel.text = temp;
[temp release];
//return to parentview
[self.navigationController popViewControllerAnimated:YES];
}
不幸的是,descriptionCell不包含任何数据,并且不会进行修改。您是否在我的代码中看到任何问题,或者我应该“玩”索引
提前谢谢。
干杯,
西蒙
答案 0 :(得分:0)
实际上我认为你在descriptionCell中什么都没有,因为当时那个单元格不可见。如果单元格不可见,则cellForRowAtIndexPath返回nil。查看文档 -
的cellForRowAtIndexPath:
Returns the table cell at the specified index path.
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
Parameters
indexPath
The index path locating the row in the receiver.
Return Value
An object representing a cell of the table or nil if the cell is not visible or indexPath is out of range.
You can do this by managing text in some data structure and when you go back to previous view you call reloadData and check for that value in cellForRowAtIndexPath.
答案 1 :(得分:0)
您可以在根表视图控制器中添加NSString
属性,该属性将用于存储更新文本的值。然后在您的save
方法中,使用新文本更新根视图controlelrs NSString
属性的值。最后,您可以调用您的根视图控件tableviews reloadData
方法,如下所示:
FindTableViewController *rootController = [self.navigationController.viewControllers objectAtIndex:1];
[rootController.tableView reloadData];
在根表视图中,您希望实现表视图- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法,以便在调用reloadData
时将NSSTring属性的值应用于相应的单元格。
if(indexPath.row == myCellIndex){
cell.textLabel.text = myStringProperty;
}