我正在开发一个 iOS 应用程序,它使用包含选项卡的左侧滑出抽屉,每个选项卡代表应用程序的一个主要视图。目前,当用户选择一个选项卡时,应用程序会在导航堆栈中搜索相关视图控制器的实例,如果找到一个则弹出回该控制器,否则它会创建一个新实例并将其推送到堆栈上。
我还想添加一个后退按钮,允许用户返回到上一个视图,但是由于许多导航选项会将用户弹出到上一个视图控制器,导致他们离开的控制器被释放,所以没有明显的方法有一个后退按钮以再次返回该控制器。
有没有办法构造这个应用程序,以便可以添加后退按钮,同时仍然允许用户在给定时间使用选项卡导航到任何视图?
导航代码示例如下(在用户单击其中一个选项卡时调用):
if(![self.navigation.topViewController isKindOfClass:[GraphViewController class]]) { //Are we already in this view?
BOOL foundController = NO;
for(id controller in self.navigation.viewControllers) { //Is there a controller of this type already in the stack?
if([controller isKindOfClass:[GraphViewController class]]) {
[self.navigation popToViewController:controller animated:YES];
foundController = YES;
break;
}
}
if(!foundController) {
GraphViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"graphViewController"];
controller.connection = _connection;
controller.data = _dataCache;
[self.navigation pushViewController:controller animated:YES];
}
}