如何关闭UIVIewController?

时间:2011-02-14 09:21:37

标签: iphone objective-c cocoa-touch uiviewcontroller dismiss

我有一个MainWindowController,我想关闭“触摸内部”按钮事件并打开一个新的UIView。 我使用的代码是:

NewViewController *controller = [[NewViewController alloc]
initWithNibName:@"NewView" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];

但是通过这种方式,MainWindowController不会自行关闭它。

3 个答案:

答案 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
}];