如何关闭视图 - Xcode

时间:2012-05-30 11:42:59

标签: iphone objective-c macos uiview

我创建了一个基于NSWindowController的窗口,用...调用

view2Controller = [[View2Controller alloc] initWithWindowNibName:@"View2"];
[view2Controller showWindow:self];

效果很好,我有一个功能正常的窗口 现在我需要关闭它。

exit(0); // closes the entire application
close(0); // does is in the documentation, but it nothing

我找到了使用的建议..

[self dismissModalViewControllerAnimated:YES];

,但这似乎只适用于UI视图,并产生错误。

如何关闭我在这里的窗口?

3 个答案:

答案 0 :(得分:2)

您似乎对OS X和iOS编程感到困惑。两者都运行objective-c,但只有OS X使用 initWithWindowNibName 。从您的标签看,您似乎正在为iPhone开发。

查看有关处理 UIViews UIViewControllers 的教程。

答案 1 :(得分:1)

尝试[view2Controller removeFromSuperview];

在您的情况下,我会使用基于视图的应用程序。窗口和视图之间的区别在于窗口模板不会创建视图控制器类和相关的用户界面文件(.xib)。它只是给你一个空白的窗口。在iOS中,只能有1个窗口,但可以在该窗口中显示多个视图。

基于视图的模板执行基于窗口的模板所做的一切PLUS它创建了一个视图控制器类和该类的xib文件。此外,它还将第一个视图控制器添加到您的窗口。在iOS中,当您想要显示另一个视图时,您几乎肯定会想要另一个视图控制器类。视图控制器类可以轻松地添加其他视图。

由于Window模板给你0开始,而View模板给你1开始,你的两个视图最终需要2,所以开始使用View模板的工作量会减少。

答案 2 :(得分:0)

如果你正在使用UIWindow,你应该看一下this。 但是你正在使用UIViewController,有两个解决方案:

1。)如果您的UIViewController呈现为modalViewController

[myViewController dismissModalViewControllerAnimated:YES];

2.)否则,如果您的UIViewController从其他UIViewController或UIWindow导航 你应该试试这个:

[self.navigationController popViewControllerAnimated:YES];

如果你正在使用UIView,你应该使用:[myView removeFromSuperView];