我的问题似乎很简单,但我未能在这里或其他地方找到解决方案。
我有一个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;
}
答案 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)