我已经在切换 UIView 方面工作了一段时间,并且正在尝试一个基本的 UIView 切换,而不使用 UINavigationController。我研究了 UINavigationControllers,但我一直在努力解决下面的问题,所以我想全面探索它。
我的项目组织是:
MainViewController.h/.m -> viewDidLoad: This method runs a NSTimer to update self.view with a few bits and bobs.
ConfigView.h/.m: -> viewDidLoad: nothing - just an idle view.
MainViewController.xib -> Main window NIB
ConfigView.xib -> ConfigView NIB
我在 MainViewController.m 中有以下方法在 UIButton 按下事件时执行:
- (IBAction)switchToConfigView:(id)sender {
if(self.configViewController == nil) {
ConfigView *cv = [[ConfigView alloc] initWithNibName:@"ConfigView" bundle:nil];
self.configViewController = cv;
[cv release];
}
[self.view addSubview:configViewController.view];
}
现在,当我切换到 ConfigView 时, View 确实显示了,但 viewDidLoad: from MainViewController 似乎仍在执行,导致两个 View 有效合并。从代码中,我可以看出情况显然如此,因为实际的 View 切换本身是在 MainViewController 上下文中执行的,正如您所见,只是一个 subview 。
我的问题是,在通过向其中添加另一个 subview 来切换 View 时,如何巧妙地隐藏/暂停 MainViewController 中的所有操作?我的猜测是这是不可能的,或者更确切地说,需要大量的腿部工作才能更好地应用其他一些方法。我怀疑我需要从 ConfigView.h/.m 实现实际的切换,但我可能错了。
如果您能对上述内容有所启发,那就太棒了。
谢谢
瑞士奶酪。
最佳答案
我的建议是:
1) 有一个基本的、空的 View ;
2) 为其添加一个 subview ;这将是您实际的第一个 View ;
3)当你想切换时,从基础 View 中移除第一个 subview ,并添加第二个作为 subview ;
4) 当你想切换回去时,移除第二个并将第一个作为 subview 添加到基础 View 中;
您可以轻松处理任意数量的 View 。它有效。
或者,您可以隐藏 View 而不是删除它。
关于Iphone UIView 切换 : Previous view's subviews polluting newly switched-to view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045821/