• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

objective-c - 模态 UINavigationController 隐藏但不关闭

[复制链接]
菜鸟教程小白 发表于 2022-12-13 16:37:07 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

好的,所以我正在构建一个具有初始登录 View (名为 LoginVC 的 View Controller )的通用 iOS 应用程序,只是一个简单的 UIViewController。如果登录成功,应用程序将转到导航 Controller (MainNavigationVC)。我通过 XCode 的 Storyboard gui 创建了这个 segue,因此没有完成导航 Controller 的编程创建。导航 Controller 以全屏模式显示,因此应用程序的其余部分在登录 View 上运行,此导航 Controller 是一切的核心。

导航 Controller 包含一个 View (带有一个名为 UserStartPageVC 的 View Controller ),其导航栏中有一个注销按钮。此按钮向 UserStartPageVC 发送一个目标操作,目的是关闭导航 Controller ,从而将用户带回登录 View 。

到目前为止一切正常。我可以按预期登录并使用该应用程序。但!当我注销然后重新登录时,XCode 告诉我:

Warning! Attempt to present <MainNavigationVC: 0x753110> on <LoginVC: 0x756fcf0> while a presentation is in progress!

我想这意味着登录 View 正试图以模态方式显示 MainNavigationVC 导航 Controller ,但已经显示了另一个,对吧?但是怎么做?可以不显示就呈现 View 吗?

注销时如何摆脱旧的导航 Controller ?我尝试了几种关闭模态视图的方法,例如:

  • 在 UserStartpageVC 中运行

    [x dismissViewControllerAnimated:YES 完成:NULL]

    [x dismissModalViewControllerAnimated:YES]

其中 x 是 self、self.parentViewController 或 self.presentingViewController。

  • 将 LoginVC 设置为 UserStartpageVC 中的属性并运行

    [self.loginVCdismissViewControllerAnimated:YES 完成:NULL]

等等。

所有经过测试的调用实际上都让我回到了登录屏幕,所以它有点在工作。

有什么想法吗?如有必要,可以提供相关的代码示例,我只是无法弄清楚哪些部分是感兴趣的。导航 Controller 的 seguing 没有代码(performSegueWithIdentifier:sender: 除外),关闭它的代码是我似乎无法理解的部分。

作为旁注。到目前为止,这不是一个真正的问题。该应用程序运行,并且除了 XCode 中的错误消息之外,可以注销并重新登录而不会产生任何其他副作用。但我想如果用户多次注销并登录,这将是内存泄漏,而且我不想被 Apple 不必要地拒绝。



Best Answer-推荐答案


我发现了另一种获取完全相同的错误消息的方法。祝我好运!

如果您在某一时刻创建了一个 segue 并将其绑定(bind)到一个按钮(单击按钮 -> 新 View ),然后为该 segue 命名并直接使用调用它

[self performSegueWithIdentifier"identifierName" sender:self];

然后你会得到这个错误,因为你可以有效地触发 segue 两次。我认为让按钮调用 IBAction 会关闭我一开始设置的 segue,但显然不是。点击按钮触发了 segue 两次,但是在我删除 segue 并将其重新创建为具有相同标识符的 View 上的手动 segue 之后,我能够通过上面的代码调用它并且没有收到警告消息。

关于objective-c - 模态 UINavigationController 隐藏但不关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12596882/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap