我已经阅读了很多类似的问题,而且我无法弄清楚为什么这个观点不起作用。我花了四个小时就这么做了,所以我觉得是时候寻求帮助了。
我的主要VC代码是在didSelectRowAtIndexPath上使用此方法的UITableView:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%s", __FUNCTION__);
svc = [[SubViewController alloc] initWithNibName:@"SubView" bundle:nil];
//UINavigationController *nc = [[UINavigationController alloc] init];
switch (indexPath.section) {
case 0 :
switch (indexPath.row) {
case 0 :
NSLog(@"0");
svc.label.text = @"Item";
break;
case 1:
NSLog(@"1");
svc.label.text = @"Category";
break;
}
break;
NSLog(@"2");
case 1 : svc.title = @"Second Cell"; break;
case 2 : svc.title = @"Third Cell"; break;
case 3 : svc.title = @"Image"; break;
case 4 : svc.title = @"Notes"; break;
NSLog(@"3");
break;
}
NSLog(@"4");
//svc = [[SubViewController alloc] init];
NSLog(@"svc is %@", svc);
UINavigationController *nc = [[UINavigationController alloc] initWithNibName:@"SubView" bundle:nil];
//initWithRootViewController:svc];
[nc pushViewController:svc animated:YES];
NSLog(@"self.navigation is as %@",nc);
NSLog(@"5");
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
你可以看到我也尝试过的东西。输出日志显示:
2013-02-12 13:32:22.858 CollapsableTableView[35122:c07] -[ViewController tableView:didSelectRowAtIndexPath:]
2013-02-12 13:32:22.859 CollapsableTableView[35122:c07] -[SubViewController initWithNibName:bundle:]
2013-02-12 13:32:22.860 CollapsableTableView[35122:c07] wtf
2013-02-12 13:32:22.860 CollapsableTableView[35122:c07] 0
2013-02-12 13:32:22.860 CollapsableTableView[35122:c07] 4
2013-02-12 13:32:22.861 CollapsableTableView[35122:c07] svc is <SubViewController: 0x10363070>
2013-02-12 13:32:22.863 CollapsableTableView[35122:c07] self.navigation is as <UINavigationController: 0x101608b0>
2013-02-12 13:32:22.863 CollapsableTableView[35122:c07] 5
所以找到了SubView,但没有加载..任何想法都会受到重视。感谢
更新。在评论之后(感谢:))我的代码现在看起来像这样,但仍然是虚无... ...
svc = [[SubViewController alloc] initWithNibName:@"SubView" bundle:nil];
UINavigationController *nc = self.navigationController;
switch (indexPath.section) {
case 0 :
switch (indexPath.row) {
case 0 :
NSLog(@"0");
svc.label.text = @"Item";
break;
case 1:
NSLog(@"1");
svc.label.text = @"Category";
break;
}
break;
NSLog(@"2");
case 1 : svc.title = @"Second Cell"; break;
case 2 : svc.title = @"Third Cell"; break;
case 3 : svc.title = @"Image"; break;
case 4 : svc.title = @"Notes"; break;
NSLog(@"3");
break;
}
NSLog(@"4");
//svc = [[SubViewController alloc] init];
NSLog(@"svc is %@", svc);
[nc pushViewController:svc animated:YES];
//pushViewController:svc animated:YES];
NSLog(@"self.navigation is %@",nc);
NSLog(@"5");
答案 0 :(得分:1)
UINavigationController *nc = [[UINavigationController alloc] initWithNibName:@"SubView" bundle:nil];
将其替换为:
UINavigationController *nc = self.navigationController;
您正在创建一个全新的UINavigationController
。你需要使用你拥有的那个并推动它。
注意强>
即使您正在制作新的UINavigationController
,也不会使用视图控制器笔尖。您可以使用您评论的代码为新rootViewController
设置UINavigationController
。
答案 1 :(得分:1)
在创建此视图之前添加导航控制器(APP DELEGATE)等。然后将此视图作为导航控制器的根目录。
最后。 self.navigationController pushViewController:(UIViewController*) animated:(BOOL)
我认为这样做会有所帮助。
如果您不确定如何添加导航控制器,请使用根视图控制器搜索导航控制器的初始化。
但如果你的意思是在这里添加一个新的视图控制器,那么你就是错的,只是忘了将子视图添加到主视图中。