我对 tableView 选定的行有问题。当我选择它选择的行时,但是当我返回上一个导航控制器时,该行被取消选择。我可以让 iPhone 记住选择了哪一行,当我按下控制器时它会记住选择的行,它可以是蓝色的吗?
问问题
2343 次
2 回答
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];
}
}
于 2010-03-09T17:30:16.160 回答
0
我建议通过将选定的行索引保存到文件 (info.plist?properties.plist) 来维护 iPhone 中的状态。然后,当您返回该视图时,从文件中取回所选行并更改所选行索引。
于 2010-03-09T14:11:46.077 回答