-1

目标:使用 UITextField 数据条目和两个按钮创建警报:“接受”和“取消”。

我知道 UIAlertViewController 不会被更改。

我试图制作一个 UIViewController 但在 VC 的视图填充包含成员警报/模式视图的整个屏幕时遇到问题。

最简单的方法就是制作一个 UIView 并从主机控制它。

我想要的只是将 *customizable* 对话框/警报显示为 *presented* UIViewController。通过自定义警报,我的意思是能够接受来自用户的数据。

我也很好奇这将如何通过 SwiftUI 完成。

4

2 回答 2

1

如果您考虑 UIKit,那么您可以像这样在 UIAlertController 中放置一个文本字段。

let alertController = UIAlertController(title: "Text Entry", message: "", preferredStyle: .alert)

// Add a textField to your controller, with a placeholder value & secure entry enabled
alertController.addTextField { textField in
    textField.placeholder = "Enter Text"
    textField.isSecureTextEntry = true
    textField.textAlignment = .center
}

// A cancel action
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { _ in
    print("Canelled")
}

// This action handles your confirmation action
let confirmAction = UIAlertAction(title: "Accept", style: .default) { _ in
    print("Current password value: \(alertController.textFields?.first?.text ?? "None")")
}

// Add the actions, the order here does not matter
alertController.addAction(cancelAction)
alertController.addAction(confirmAction)

present(alertController, animated: true, completion: nil)

在此处输入图像描述

让我知道它是否回答了您的问题。

于 2020-07-16T18:09:38.723 回答
0
extension UIViewController {

func showAlertWithCancel(title: String, message: String, okAction: String, cancel: String, completion: ((Bool, String) -> Void)? = nil ) {
    let sb_main = UIStoryboard.init(name: "Main", bundle: nil)
    let vc: CustomNewAlertVC = sb_main.instanceVC()
    vc.modalPresentationStyle = .custom
    vc.modalTransitionStyle = .crossDissolve
    vc._ok = okAction
    vc._msg = message
    vc._title = title
    vc._cancel = cancel
    vc.delegate = { aa in
        completion?(aa)
    }
    DispatchQueue.main.async {
        self.present(vc, animated: true, completion: nil)
    }
 }
}

要显示警报使用: self.showAlertWithCancel(title: "Test" ....

在此处输入图像描述

于 2020-07-16T18:06:37.757 回答