4

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

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

但是这样 MainWindowController 不会自行关闭它。

4

3 回答 3

9

试试这个

[self dismissViewControllerAnimated:YES completion:nil];
于 2014-04-16T09:37:14.680 回答
1

在您调用“内部修饰”事件的选择器/方法中,尝试使用

[self dismissViewControllerAnimated:YES completion:{
//Optional, but could be used to do something magical, once controller has been dismissed
}];
于 2011-02-14T10:07:10.263 回答
1

您应该使用 UINavigationController 来管理 UIViewControllers 的推送和弹出。在 UINavigationController 你应该定义一个根视图控制器,子视图控制器像层一样添加在它上面。

你可以有一个根并添加一个孩子。当您按下按钮时,弹出孩子并让根推动另一个孩子。

行动将是这样的:

root push child1(root被child1覆盖)

root pop child1 (root 可见)

root push child2(root被child2覆盖)

这是UINavigationController 文档的链接。

如果要从 UIViewController 中删除 UIView,则不需要 UINavigation 控制器。您可以在 viewController 中创建 2 个 UIView,并在按下按钮时交换它们。

1)创建一个 UIView 来保存交换的视图(容器)

2) 构建您想要交换的 UIViews。将它们放在一个数组中。

3)将您的按钮连接到一个操作方法。该方法应该找出需要显示的视图的索引,删除所有容器的子视图,将子视图 [viewsArray objectAtIndex:nextViewIndex] 添加到容器中。

于 2011-02-14T09:59:07.487 回答