这个问题很常见,但我无法用任何可用的答案来解决它。
我正在使用 iOS 5.1。我的导航控制器是标签栏视图控制器中的一个标签。有一个表格视图,其中选择一行会推动新的视图控制器。
仅在选择第二行时才会出现此问题,并且仅在某些时候出现。这不正常。Pushed 视图变为空白 - 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 堆栈。
正如我在评论中提到的,它是标签栏控制器中的常规导航控制器。