我有问题与tableView选择行。当我选择它所选择的行时,但当我回到上一个导航控制器时,该行被取消选择。我可以这样做iPhone记得选择了什么行,当我按下控制器时它会记住所选择的行,它可以是蓝色吗?
答案 0 :(得分:1)
对象通常“记住”事物的方式是将它们存储在实例变量中。因此,跟踪所选行的简单方法是向列表控制器添加实例变量和类型NSIndexPath *
的属性。然后,您可以使用该属性存储传递给表视图控制器的-tableView:didSelectRowAtIndexPath:
方法的indexPath。
然后您的列表控制器可以覆盖继承的-viewWillAppear:方法,将消息发送到表视图以重新选择该行,如下所示:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// Good idea to reload the table view's cells
// in case the underlying data was changed by
// another view controller.
[[self tableView] reloadData];
// Assuming you added a selectedIndexPath property
// to your list controller...
//
if ([self selectedIndexPath] != nil)
{
// Select the row. Note that you need to be sure
// that the table view is scrolled so that the
// selected row is visible.
[[self tableView] selectRowAtIndexPath:[self selectedIndexPath]
animated:NO
scrollPosition:UITableViewScrollPositionMiddle];
// Get rid of the saved selection
[self setSelectedIndexPath:nil];
}
}
答案 1 :(得分:0)
我建议通过将选定的行索引保存到文件(info.plist?properties.plist)来维护iPhone中的状态。然后,当您返回到该视图时,从文件中返回选定的行并更改选定的行索引。