0

我对 tableView 选定的行有问题。当我选择它选择的行时,但是当我返回上一个导航控制器时,该行被取消选择。我可以让 iPhone 记住选择了哪一行,当我按下控制器时它会记住选择的行,它可以是蓝色的吗?

4

2 回答 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 回答