我有一个应用程序,加载时,加载基于选项卡的应用程序,所有选项卡都正常工作。在第一个选项卡中,加载的视图有一大堆按钮。我已经编写了这些按钮的方法,所以当按下它们时会推送一个新的子视图(.xib),这样可以正常工作。
但是,在这些新的子视图中,我有一个后退按钮,它有自己的方法。我希望此按钮删除视图并返回到原始视图。这是FirstViewController.m的代码。
请记住,即使文件处理不同的.xib文件,此文件仍包含所有代码。基本上它首先推送FirstView,然后按下按钮它将推送E87view.xib
,.xib的代码仍然在firstviewcontroller文件中。
-(IBAction) backButtonPressed {
[self showAll];
backButton.hidden = 1;
for (UIView *subview in [self.view subviews]) {
[subview removeFromSuperview];
}
[self showAll];
}
-(IBAction) E87Pressed {
//[self hideAll];
E87view *e87view = [[E87view alloc] initWithNibName:@"E87view" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:e87view animated:YES];
[self.view addSubview:e87view.view];
}
所以重申一下,当我按下加载FirstView.xib
的第一个视图上的按钮E87时,它将推送新视图E87view.xib
。但是,当我按下新加载的E87view
上的后退按钮时,它将访问上述功能并删除视图,但也删除了FirstView.xib
的所有设置,基本上留给我一个空的应用程序。
希望这有道理我可以絮絮叨叨。
此致
路易斯
答案 0 :(得分:2)
只需使用
从导航控制器中删除ViewController,而不是删除每个子视图[self.navigationController popViewControllerAnimated: YES];
这条线是不必要的
[self.view addSubview:e87view.view];
答案 1 :(得分:0)
看着你的代码,有些事让我感到困惑:
1)为什么在将视图控制器推送到屏幕后,将viewController e87view的子视图再次添加到主视图?在推送viewController e87view时,应该为您处理所有事情。 viewController将添加到navigationController堆栈中,并且还应该显示viewControler的视图。
所以打电话
[self.navigationController pushViewController:e87view animated:YES];
后
[self.view addSubview:e87view.view];
会将您的观点两次添加到屏幕上。
2)为什么要编写自己的代码进行导航?虽然这个可以完成..你确定这是你想做的吗?通常在将viewController e87view推送到navigationController后,会自动为您显示一个后退按钮如果你的viewController e87view有一个标题。