关闭视图控制器

Posted

技术标签:

【中文标题】关闭视图控制器【英文标题】:Close view controller 【发布时间】:2015-01-26 17:05:36 【问题描述】:

在我的 OS X 应用程序中,我有 2 个视图:一个用于登录,一个仅显示文件的内容。我创建了 2 个 .xib 文件,一个用于登录表单,一个用于表格视图。该应用程序的逻辑运行良好,但我在演示视图控制器时遇到了问题。 当用户单击登录按钮时,应关闭带有登录表单的视图控制器,并应显示带有表格视图的视图控制器。 当用户单击注销按钮时,应关闭带有表格视图的视图控制器,并应显示带有登录表单的视图控制器。 现在要在 2 个视图控制器之间切换,我使用以下代码:

HistoryViewController *historyViewController = [[HistoryViewController alloc]init];
[self presentViewControllerAsModalWindow:historyViewController];

但是如果用户点击注销按钮,它会显示登录视图控制器,如果用户按下关闭按钮(左上角的红色按钮),它会再次显示没有用户登录的视图控制器。所以用户按下注销按钮后如何关闭表格视图控制器?有办法隐藏/吗? 我希望你能帮助我解决这个问题。谢谢

【问题讨论】:

- dismissViewControllerAnimated:completion:? 我找不到这个方法... dismissViewControllerAnimated:completion: 【参考方案1】:

当我阅读您的问题时,我假设您在应用程序中将您的登录屏幕显示为一个单独的面板。信息很少,但我会看到 yopur 应用程序的三个选项。

    在主窗口中将登录屏幕显示为视图。当登录成功时,您将主窗口中的视图从登录屏幕切换到您的表格视图。在本网站的另一个问题中介绍了在窗口内外交换视图。 Xcode single window, display custom view from xib file

    像现在一样在主窗口顶部的面板中显示登录屏幕。我假设您跟踪登录是否成功。在决定关闭面板时使用此状态。当有人通过按下关闭按钮(左上角的红色按钮)关闭面板时,窗口将向其文件所有者(通常是视图控制器)发送“windowWillClose”通知。实现此方法可在登录失败时禁止关闭窗口。这样,用户只能选择成功登录或取消登录(您必须实现方法和按钮)。关闭窗口将是不可能的。使用红色关闭按钮不小心关闭面板是不可能的。

    清空表视图的数据源,使其显示一个空表。使用在表格视图顶部运行的登录屏幕启动您的应用程序。只有当用户成功登录时,您才填写数据源并调用“reloadData”来显示表格视图的内容。如果登录失败或用户关闭面板,他将无法操作表格视图。

我会在一个窗口中选择两个视图(选项 1)或空表视图(选项 3)。选项 3 将是我的首选。我希望这会有所帮助。

【讨论】:

以上是关于关闭视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

关闭模态视图控制器后呈现不同的视图控制器

关闭当前视图控制器并打开新的视图控制器 - ios Swift

Swift:关闭所有视图控制器,然后呈现一个视图控制器

视图控制器不会立即关闭并呈现新的视图控制器

关闭多个视图控制器

如何在关闭视图控制器时获得淡出动画