如何通过点击笔尖中的按钮来显示警报?
Posted
技术标签:
【中文标题】如何通过点击笔尖中的按钮来显示警报?【英文标题】:how it possible to present alert by tapping button in nib? 【发布时间】:2021-03-25 16:53:53 【问题描述】:我对编程和 swift 比较陌生,我希望你明白,开始有时是困难的。
我在 NIB 中集成了一个登录表单,如果输入不正确,我想通过 func 调用警报。但是,只有在视图控制器中才能调用出现和解除警报。但是解决这个问题的最佳方法是什么?
【问题讨论】:
所以我的方法与你的不同。您可以比较这些值,如果它们不正确,则会弹出警报。在满足这些值之前,无需移动到另一个 NIB。欢迎来到 Stack 和 Swift 世界:) 感谢您的方法。但是,视图控制器会加载一个运行测试的 nib。因此,如果信息不正确,应该在视图控制器中加载警报。 【参考方案1】:方法 1:您可以传递 ViewController 的弱引用,然后将此 nib 作为子视图添加到该引用中,并使用它来显示警报
方法 2: 使用协议/委托或闭包在 nib 的视图类和视图控制器之间进行通信,并使用委托方法或闭包呈现警报
方法 3:如果您不想这样做,您可以随时访问根视图控制器并尝试使用根视图控制器呈现警报
如果您使用的是SceneDelegate
那么
if let scene = UIApplication.shared.connectedScenes.first, let sceneDelegate = scene.delegate as? SceneDelegate, let window = sceneDelegate.window, let rootViewController = window.rootViewController
let alert = UIAlertController(title: "your title", message: "your message", preferredStyle: .alert)
rootViewController.present(alert, animated: true, completion: nil)
如果你没有使用SceneDelegate
if let rootViewController = UIApplication.shared.keyWindow?.rootViewController
let alert = UIAlertController(title: "abcd", message: "efgh", preferredStyle: .alert)
rootViewController.present(alert, animated: true, completion: nil)
【讨论】:
@Reilaan:有用吗?还是您仍然面临问题? 我目前正在测试哪些选项最适合实施。成功实施后,我一定会给你反馈;) 我目前既不使用 SceneDelegate 也不使用 AppDelegate。我对 swift 还很陌生,还没有学会理解它。我试图将它传递给 ViewController,但结果是它重新加载了整个 ViewController 并丢弃了更改的内容 @reilaan:如果你有一个可以运行的 XCode ios App,你必须有 AppDelegate 或 SceneDelegate,只要搜索AppDelegate.swift
和 SceneDelegate.swift
,如果你的开发目标在 12 以上,你可能有 SceneDelegate.swift
与AppDelegate.swift
一起,否则你将只有AppDelegate.swift
我想学习一种没有AppDelegate
和SceneDelegate
的iOS 应用程序开发新方法,你可能已经发明了:P
我是 iOS 应用程序的新手,我不知道 SceneDelegate
或 AppDelegate
不是正确答案,您认为 iOS 如何在没有 AppDelegate
或 SceneDelegate
的情况下将应用程序生命周期传达给应用程序?你认为 Window 是如何加载根视图控制器的? AppDelegate
或 SceneDelegate
是应用程序的基础,如果没有它们,您的应用程序将无法工作,iOS 希望您的应用程序拥有它,以至于当您使用 xcode 模板创建应用程序时,它默认添加应用程序委托,读取这两个委托中的回调将帮助您将来实现复杂得多的事情以上是关于如何通过点击笔尖中的按钮来显示警报?的主要内容,如果未能解决你的问题,请参考以下文章