什么时候UITableView完成更新?

时间:2009-10-19 15:12:26

标签: iphone sdk

我的问题似乎很简单,但我未能在这里或其他地方找到解决方案。 我有一个UITableView作为我的一个UIViews的子类。当应用程序完成时,最后选择的表格单元格保存到NSUserDefaults,当应用程序重新启动时,我想要设置之前的选择单元格。但是,当我过早地这样做时会导致问题,因为部分的数量是未知的,即表还没有加载其数据。所以我决定在函数numberOfRowsInSection中设置它,它可以工作,但我确信这不是正确的地方。

- (NSInteger)tableView:(UITableView *)tableView 
    numberOfRowsInSection:(NSInteger)section 
{
    int iNofRows = 0; //Default  

    // It is not great doing this here but....
    if(bSetDefaultSelection == YES)  
    {  
        bSetDefaultSelection = NO; // Stop recursion  
        **NSIndexPath* indexPath =  [NSIndexPath indexPathForRow:(NSUInteger)l last_sel_row inSection:(NSUInteger)0];  
        [self selectRowAtIndexPath:indexPath animated:NO                                      scrollPosition:UITableViewScrollPositionMiddle];**  
    }  
    return iNofRows;  
}

2 个答案:

答案 0 :(得分:4)

我认为你要找的地方是

- (void)viewDidAppear:(BOOL)animated;    
 // Called when the view has been fully transitioned onto the screen. Default does nothing

(有关更多信息,请参阅UIViewController) 我刚刚调试了我的应用程序,并且在您提到的那个之后调用了该方法:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

在你的情况下,你必须写一些类似的东西:

- (void)viewDidAppear:(BOOL)animated{
    NSIndexPath* indexPath = [NSIndexPath indexPathForRow:(NSUInteger)l last_sel_row inSection:(NSUInteger)0];
    [self selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle];
}

干杯!

答案 1 :(得分:0)

嘿,谢谢你的回复。我以为没人回答这么多的努力。 '(void)viewDidAppear:(BOOL)animate'的解决方案仅适用于UITableViewController,但我正在处理UITableView。 但我决定在我的主控制器中发布一个通知,触发表格选择,并且工作正常。 再次感谢。