selectRowAtIndexPath在viewWillAppear中失败

时间:2011-09-28 22:06:42

标签: ios ipad uitableview uipopovercontroller

我在UITableview中有一个UIPopovercontroller的菜单,选中后会将父视图的UIScollView滚动到特定的框架。

它运作良好。

问题是如果你使用pageControl滚动框架我需要更新表格[_delegate returnPageNumber]中的选定行,返回当前的pageControl.currentPage

没有错误,NSLog报告正确的页码:

scrollIndexPath is <NSIndexPath 0x1a3380> 2 indexes [0, 3]

但是正确的细胞没有突出......为什么????

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    //[tableView reloadData];
    int isPage = [_delegate returnPageNumber];
    NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:(isPage) inSection:0];
    NSLog(@"scrollIndexPath is %@",scrollIndexPath);
    [tableView selectRowAtIndexPath:scrollIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone];      
}

我尝试过前后放[tableView reloadData]并在viewDidAppear中使用代码......没有任何作用

2 个答案:

答案 0 :(得分:2)

尝试在[super viewWillAppear]

之后调用viewWillAppear
- (void)viewWillAppear:(BOOL)animated 
{

    NSIndexPath *selection = [self.tableView indexPathForSelectedRow];

    [[self tableView] reloadData];    


    if (selection)
    {
        [[self tableView] selectRowAtIndexPath:selection animated:NO scrollPosition:UITableViewScrollPositionNone];        
    }

    [super viewWillAppear:animated]; //Trick is calling super last in this case. Then you can  retrieve previously selected row to --> NSIndexPath *selection

}

答案 1 :(得分:0)