0

UITabBarController在情节提要中有“是初始视图控制器”。当它出现在屏幕上时,会出现最左侧选项卡的视图。我在实现所述选项卡的控制器时有以下方法:

- (void)viewDidAppear:(BOOL)animated {
    NSLog(@"view controller - first tab - appeared");
}

这仅在我手动切换到第一个选项卡时调用,而不是在它首次加载时调用。

我的问题是 - 在第一次加载应用程序时,在第一个选项卡的控制器中调用什么方法?

编辑 - 奇怪的行为?

当第一个选项卡出现在屏幕上viewDidLoad时被调用并且一切都很好,但viewDidAppear直到手动选项卡更改才被调用。而其他选项卡第一次出现时,同时调用viewDidLoad AND viewDidAppear方法。

4

2 回答 2

3

尝试

 -(void)viewDidLoad
{
      [super viewDidLoad]
      NSLog(@"view controller - first tab - appeared");
}
于 2013-10-16T13:57:39.723 回答
1

问题在于您在该方法中尝试执行的操作,因为它位于生命周期的不同部分。

我有一张桌子,它的附件复选标记根据模型打开和关闭。在viewDidLoad中,表格会自动添加所有复选标记(这是默认设置)。

基本上,我在accessoryType最初显示单元格之前更改了单元格,并且我的更改被覆盖了。在viewDidAppear我浏览数据并更改它们。由于从未调用此方法,因此第一个选项卡屏幕始终不正确。

我能够通过viewDidAppear在所有选项卡和UITableViewDelegate方法上使用来解决此问题:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

在第一次显示选项卡视图时设置附件类型

于 2013-10-29T20:59:12.143 回答