这个问题非常频繁,但我无法解决任何可用的答案。viewwillappear和viewdidappear不叫
我正在使用iOS 5.1。我的导航控制器是标签栏视图控制器中的一个选项卡。有一个tableview,其中选择一行推动新的视图控制器。
仅在选择第二行时才会发生此问题,并且有时会出现此问题。这并不经常。 推送视图空白 - viewWillAppear
/viewDidAppear
未被调用。点击导航栏的后退按钮 - 根视图的viewWillAppear
/viewDidAppear
也未被调用,使其成为空白。
我以完全相同的方式推动选择第一行/第二行的视图。但问题只发生在第二行。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
switch (indexPath.row) {
case 0:
AViewController *aObj = [[AViewController alloc] init];
aObj.homeObj = self;
[self.navigationController pushViewController:aObj animated:YES];
[aObj release];
break;
case 1:
BViewController *bVCObj = [[BViewController alloc] init];
bVCObj.homeObj = self;
[self.navigationController pushViewController:bVCObj animated:YES];
[bVCObj release];
break;
default:
break;
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
viewDidLoad
被称为上推BViewController
,然而,viewWillAppear
和viewDidAppear
不会被调用。以下是我的viewDidLoad
:- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; NSLog(@"nav stack: %@", [self.navigationController viewControllers]); NSLog(@"nav stack: %@", [[self.navigationController visibleViewController] description]); //some initialization and call of methods }
这不是常规的。有时我会看到这种情况,直到我从后台关闭应用程序并重新启动它。但有时它工作得很好。我只是把我的视图控制器推到nab堆栈。
正如我在评论中提到的那样,它是标签栏控制器中的常规导航控制器。
你是什么意思'我的导航控制器是在标签栏控制器的视图控制器内'。 navcontroller应该是* TabBar视图控制器之一,您不需要将其包装在另一个viewController中。 – andreamazz
我的意思是导航控制器作为标签栏控制器的一部分。 :) –