【问题标题】:How to re-present modalViewController on iOS如何在 iOS 上重新呈现 modalViewController
【发布时间】:2013-01-08 13:51:24
【问题描述】:

我的应用有两个窗口,mainWindow(用于几乎所有视图)和 loginWindow(仅用于登录视图)。 当applicationDidEnterBackground 我用 loginWindow 切换 mainWindow:

[self.loginWindow makeKeyAndVisible];
[self.mainWindow setHidden:YES];

当我回到应用程序时,会显示 loginWindow 及其视图。效果很好。

但是,我在 mainWindow 中的 modalView 演示存在问题。 在applicationDidEnterBackground 窗口再次切换后。返回 mainWindow 后,modalView 不可见。

self.modalViewController 方法为我提供了之前提供的确切 modalView,但不再可见。

我尝试再次显示此 modalView,但没有这样的运气:

[self presentModalViewController:self.modalViewController animated:NO];

如何再次“重新呈现”这个隐藏的 modalView?

【问题讨论】:

  • self.modalView 是视图属性吗?
  • @RohanKapur:不,不是。但这不是问题。无论如何,获取对模态呈现对象的正确实例的引用。我只需要某种方式再次代表它......

标签: iphone ios window modalviewcontroller presentmodalviewcontroller


【解决方案1】:

这里可能需要一些逻辑。就像 Crio 所说的,进入后台时将其关闭,但在属性或某事中记住它。否则。

// applicationDidEnterBackground
self.savedModalViewController = self.modalViewController;
[self.mainWindow dismissModalViewControllerAnimated:NO];

// after login but before presenting the mainWindow again
[self.mainWindow presentModalViewController:self.savedModalViewController animated:NO];

【讨论】:

  • 我已经考虑过这一点,但正在寻找一个更好、更简单的解决方案。也许这是唯一的一个。谢谢!
  • 而不是切换窗口,您可以将mainWindowrootViewControllermainControllerloginController 交换。也许在这种情况下模态视图会保留在原位。
  • 它也不起作用。模态隐藏在这两种情况下。顺便一提。为什么要切换 rootViewController 而不是 windows?做每个...的优点/缺点是什么?
  • iOS 应用程序通常只使用一个 keyWindow。创建窗口并在它们之间切换非常昂贵。但是,如果您没有遇到任何延迟(测试旧设备),那就没问题了。 (但你的内存占用也会更高,当你使用两个窗口时)
  • 谢谢。我会坚持一个窗口。
【解决方案2】:

如果您以模态方式显示“modalView”,则在applicationDidEnterBackground 上关闭模态视图:

[self.mainWindow dismissModalViewControllerAnimated:NO];

然后模态应该可以正常工作了。

【讨论】:

  • 如果我关闭 modalView 而不是不再显示。但我不想放弃这个视图并希望它在我手动关闭它之前一直显示。
  • 如果您听上去要让用户再次登录,您离开它是否有原因?
  • 它实际上不是登录屏幕,而是用户每次看到的某种“第一屏”......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多