目标:要创建包含UITextField数据条目和两个按钮的警报:“接受”和“取消”。
我知道UIAlertViewController不会被更改。
我试图制作一个UIViewController,但是在VC的视图充满整个包含成员警报/模式视图的屏幕时遇到了麻烦。
最简单的方法只是制作一个UIView并从主机控制它。
我想要的只是将* customizable *对话框/警报显示为* presented * UIViewController。定制警报是指具有接受用户数据的能力。
我也很好奇如何通过SwiftUI做到这一点。
答案 0 :(得分: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)
让我知道它是否回答了您的问题。
答案 1 :(得分: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” ....