【发布时间】:2012-08-26 20:25:34
【问题描述】:
这个问题很常见,但我无法通过任何可用的答案来解决它。
我正在开发 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 堆栈。
正如我在评论中提到的,它是标签栏控制器中的常规导航控制器。
【问题讨论】:
-
“我的导航控制器位于标签栏控制器的视图控制器内”是什么意思。 navcontroller 应该是 TabBar 视图控制器之一,您不需要将它包装在另一个 viewController 中。
-
我的意思是导航控制器作为标签栏控制器的一部分。 :)
标签: iphone ios uinavigationcontroller uitabbarcontroller viewwillappear