0

我创建了一个基于 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 视图,并会产生错误。

我怎样才能关闭我在这里的窗口?

4

3 回答 3

2

您似乎混淆了 OS X 和 iOS 编程。两者都运行 Objective-c,但只有 OS X 使用initWithWindowNibName。从您的标签来看,您似乎正在为 iPhone 开发。

查看有关处理UIViewsUIViewControllers的教程。

于 2012-05-30T12:00:11.097 回答
1

尝试[view2Controller removeFromSuperview];

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

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

由于 Window 模板为您提供 0 开头,而 View 模板为您提供 1 开头,并且您的两个视图最终需要 2,因此从 View 模板开始您的工作量会减少。

于 2012-05-30T11:53:19.517 回答
0

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

1.)如果您UIViewController以 modalViewController 的形式呈现

[myViewController dismissModalViewControllerAnimated:YES];

2.)否则,如果您UIViewController从其他 UIViewController 或 UIWindow 导航,您应该尝试以下操作:

[self.navigationController popViewControllerAnimated:YES];

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

于 2012-05-30T12:22:50.087 回答