使用 swift 4 退出应用程序并返回主屏幕

Posted

技术标签:

【中文标题】使用 swift 4 退出应用程序并返回主屏幕【英文标题】:Exiting app and going back to home screen using swift 4 【发布时间】:2018-10-04 05:00:39 【问题描述】:

我正在使用 UITabbarController。我在 UITabbarController 中有 3 个项目/选项卡。每个选项卡都描绘了单独的视图控制器。视图列表如下

选项卡 1:列表视图控制器 标签 2:收藏视图控制器 标签 3:联系人视图控制器

现在假设我在选项卡 3(联系人视图控制器)上。在这里,我向我的用户展示了一个 UIAlertController,它有一个“退出应用程序”按钮。

当用户点击退出应用程序时,用户应该离开我们的应用程序并被带到主屏幕。

我已尝试遵循 SO 的 sn-ps,但没有任何效果。

self.view.window!.rootViewController?.dismiss(animated: true, completion: nil)

我什至读到要执行exit(integer number) 以退出应用程序,但我也读到它不应该这样做。

所以我真的很困惑我需要做什么才能退出应用程序?如何使用 Swift 4 退出应用程序并返回主屏幕?

【问题讨论】:

exit 与任何方法一样好,但在您的应用程序中设置“退出”按钮通常不是一个好主意;这就是 iPhone X 的主页按钮或底部区域的用途。 @Paulw11 我在某处读到 App Store 不接受使用 Exit 的应用程序 为什么要退出应用程序?正如@Paulw11 提到的,用户还有其他方法可以做到这一点,并且可以随时这样做。如果您完成了某个过程并且没有自然的“下一步”,您应该通知用户该操作已完成并恢复到您的初始视图控制器,以便他们可以为另一个项目再次执行此操作。 How does Booking.com close their app programmatically?的可能重复 应用程序应该只是坐在那里等待用户选择位置或其他内容。如果他们不想这样做,他们可以按主页按钮 【参考方案1】:

退出应用程序不是一个好主意。 @Cristik 在 cmets 中提供的 URL 还表明,如果苹果知道它,他们会向您发送通知以删除它。

最好保留正确的UIAlert 消息,告诉用户使用该应用程序需要什么。还有适当的 UI 导航,以首先获取业务逻辑所需的所有内容,以便用户在使用应用程序之前不会错过任何内容。

如果您仍然想使用这个,那么正如@Cristik 评论的那样尝试这个解决方案:

How does Booking.com close their app programmatically?

【讨论】:

【参考方案2】:

你可以使用:

let storyboard = UIStoryboard(name: "Main", bundle: nil)

let loginVcObj = storyboard.instantiateViewController(withIdentifier: "SignInVc") as! SignInVc

var vcArray = (applicationDelegate.window?.rootViewController as! UINavigationController).viewControllers
vcArray.removeAll()
vcArray.append(loginVcObj)

(applicationDelegate.window?.rootViewController as! UINavigationController).setViewControllers(vcArray, animated: false)

【讨论】:

此代码用于导航到 HomeScreen .. 因为您无法在应用程序中终止应用程序。 AppStore 团队将拒绝您的应用。 所以你认为退出 (0) 不好 我没有使用导航控制器

以上是关于使用 swift 4 退出应用程序并返回主屏幕的主要内容,如果未能解决你的问题,请参考以下文章

我可以从 Main 构造函数中关闭程序吗?

无法使应用程序进入主菜单(Swift 4 SpriteKit)

Swift 3D Touch iOS 10 主屏幕快速操作分享项目丢失

Xcode iOS应用程序Swift 3当我离开应用程序窗口并转到主屏幕时停止收听

tvOS - 如何以编程方式返回主屏幕

苹果手机怎么返回和退出程序