无法pushViewController进行子视图

run*_*mad 4 iphone uitableview uinavigationcontroller didselectrowatindexpath

我有一个UINavigationController,我有单独的UIViews,我在使用UISegmentControl之间切换.在切换视图时,我将视图作为子视图添加到导航控制器的视图中:

[self.view addSubview:segmentTab1.view];
Run Code Online (Sandbox Code Playgroud)

[self.view addSubview:segmentTab2.view];
Run Code Online (Sandbox Code Playgroud)

然后,在subViews中,每个都有一个UITableView,但我的问题是,我无法将新的viewController推送到didSelectRowAtIndexPath方法中的视图中.

正确调用该方法并通过设置断点,我可以看到推送视图的方法也被调用,但没有任何反应.这是我推送它的代码:

[self.navigationController pushViewController:detailsViewController animated:YES];

我也试过了

[super.navigationController pushViewController:detailsViewController animated:YES];

我做错了什么 - 或者是不可能用子视图做到这一点?

Mat*_*ong 6

当你调用-pushViewController时,哪个视图控制器是自己的?如果您从其中一个选项卡子视图中调用该选项卡,则自己可能没有从您添加到其中的顶级视图引用导航控制器.您可以通过从顶级视图中获取导航控制器的内存地址并将其与子视图中的内容进行比较来验证这一点.显然,如果它是零或不匹配,那那就是你的问题.

当你使用-pushViewController将导航控制器添加到导航堆栈本身时,你只能"免费"获得导航控制器,你的子视图没有被添加到那里.