如何通过点击笔尖中的按钮来显示警报?

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.swiftSceneDelegate.swift,如果你的开发目标在 12 以上,你可能有 SceneDelegate.swiftAppDelegate.swift 一起,否则你将只有AppDelegate.swift 我想学习一种没有AppDelegateSceneDelegate 的iOS 应用程序开发新方法,你可能已经发明了:P 我是 iOS 应用程序的新手,我不知道 SceneDelegateAppDelegate 不是正确答案,您认为 iOS 如何在没有 AppDelegateSceneDelegate 的情况下将应用程序生命周期传达给应用程序?你认为 Window 是如何加载根视图控制器的? AppDelegateSceneDelegate 是应用程序的基础,如果没有它们,您的应用程序将无法工作,iOS 希望您的应用程序拥有它,以至于当您使用 xcode 模板创建应用程序时,它默认添加应用程序委托,读取这两个委托中的回调将帮助您将来实现复杂得多的事情

以上是关于如何通过点击笔尖中的按钮来显示警报?的主要内容,如果未能解决你的问题,请参考以下文章

单击模式中的按钮后如何显示引导警报?

如何通过 Javascript / jQuery 在按钮单击时显示引导警报?

通过点击外部或取消按钮在 iOS 中关闭警报视图

如何使用此按钮中的条件在颤动中显示警报对话框?

如何在“单元测试”中为按钮添加点击操作并显示警报

在 UICollectionView 中实现按钮点击