通过嵌入式视图控制器返回导航控制器内部

时间:2014-05-27 14:38:09

标签: ios objective-c uinavigationcontroller

在我的iOS项目中,我有一个主菜单,显示在我的初始UIViewController中的容器中。 在用户选择该菜单中的任何行之后,导航控制器将按下用于管理进一步操作的子菜单viewController,该子菜单使用完整窗口。

如果用户想要返回主屏幕,他会点击“返回”按钮,我的navigationController会弹出。但是当它应该弹出到主viewController时,它无法恢复我的初始viewController的视图。

如果该视图控制器中包含嵌入了视图控制器的容器,您是否有任何线索如何回弹到viewController层次结构中的第一个navigationViewController

或者我应该考虑更改故事板的架构?

2 个答案:

答案 0 :(得分:1)

如果您希望初始视图控制器包含正确的子视图,则需要隐藏/显示在viewDidDisappear中随着用户移动到新视图时需要使其显示的样子,或者你需要在viewWillAppear回来时设置它。

但是,当您离开时,您的视图设置是在您返回时显示的方式,除非您更改它。例如,在根视图控制器中:

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    // hide your menu, clean up the view to prepare it for when user pops back
}

OR

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    // if menu is showing, hide it. Clean up view before user sees it
}

答案 1 :(得分:1)

导航控制器中的视图控制器具有子视图控制器这一事实并不重要。只关心推入导航控制器堆栈的顶级视图控制器。并且只推送/弹出顶级视图控制器,而不是儿童。

如果您遇到问题,可能会出错,并且需要发布故事板的屏幕截图,以及显示您如何管理导航控制器堆栈的代码。