我有一个MainWindowController,我想关闭“触摸内部”按钮事件并打开一个新的UIView。 我使用的代码是:
NewViewController *controller = [[NewViewController alloc]
initWithNibName:@"NewView" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];
但是通过这种方式,MainWindowController不会自行关闭它。
答案 0 :(得分:8)
试试这个
[self dismissViewControllerAnimated:YES completion:nil];
答案 1 :(得分:1)
您应该使用UINavigationController来管理UIViewControllers的推送和弹出。 在UINavigationController中,您应该定义一个根视图控制器,子视图控制器就像层一样添加在它上面。
你可以有一个root并为它添加一个孩子。当你按下按钮时,弹出孩子并让根推动另一个孩子。
行动类似于:
root push child1(root由child1覆盖)
root pop child1(root是可见的)
root push child2(root2由child2覆盖)
这是UINavigationController文档的link。
如果你想从UIViewController中删除UIView,那么你不需要UINavigation控制器。你可以在viewController中创建2个UIView,并在按下按钮时交换它们。
1)创建一个UIView来保存交换的视图(容器)
2)构建您想要交换的UIView。把它们放在一个数组中。
3)将按钮挂钩到动作方法。此方法应该找出需要显示的视图的索引,删除所有容器的子视图,将子视图[viewsArray objectAtIndex:nextViewIndex]添加到容器中。
答案 2 :(得分:1)
在你正在调用“内部触摸”事件的选择器/方法中,尝试使用
[self dismissViewControllerAnimated:YES completion:{
//Optional, but could be used to do something magical, once controller has been dismissed
}];