当文本字段为空时禁用警报按钮 Swift 3
Posted
技术标签:
【中文标题】当文本字段为空时禁用警报按钮 Swift 3【英文标题】:Disable Alert Button when Text Field is Null with Swift 3 【发布时间】:2017-03-22 03:38:55 【问题描述】:我想在文本框为空时禁用警报按钮。 我把按钮放在表格视图单元格中。因此,当您单击该按钮时,将弹出警告框。 我的代码如下。
func cellTapped(cell: DeviceListTableCell)
self.showAlertForRow(row: tableView.indexPath(for: cell)!.row)
func showAlertForRow(row: Int)
let alert = UIAlertController(
title: "Enter Password !!!!!",
message: "",
preferredStyle: .alert)
alert.addTextField (textField) in
let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default)
UIAlertAction in
let pwd = alert.textFields?[0]
self.password = pwd?.text
debugPrint(self.password)
debugPrint("Press OK")
DispatchQueue.main.async(execute:
if(self.password == "")
debugPrint("Null Password!")
else
debugPrint("Not Null Password!")
)
alert.addAction(okAction)
// Present the controller
DispatchQueue.main.async(execute:
self.present(alert, animated: true, completion: nil)
)
和
protocol ButtonCellDelegate
func cellTapped(cell: DeviceListTableCell)
谁能帮助我如何禁用/启用警报按钮?
【问题讨论】:
你真的尝试过什么吗?这应该只是注释掉代码或删除它的问题。 我真的不知道在哪里放置按钮启用/禁用代码。我已经尝试过了,但我得到了错误。 “致命错误:在展开可选值时意外发现 nil”。我在 alert.addAction(okAction) 之前设置了“okAction.isEnabled = false”。实际上主要问题是函数内部的 DispatchQueue。我无法在其中声明按钮禁用代码。我遇到了错误。 您要删除哪一部分,OK
部分还是调度队列中的部分?
我想检查文本框是否为空以禁用按钮。这就是我想要的兄弟。
我想if (self.password != "") alert.addAction(okAction)
可能会这样做...
【参考方案1】:
观察UITextFieldTextDidChange
通知以在文本更改时收到通知,然后启用和禁用okAction
// Create an alert controller
let alertController = UIAlertController(title: "Alert", message: "Please enter text", preferredStyle: .alert)
// Create an OK Button
let okAction = UIAlertAction(title: "OK", style: .default) (_) in
// Print "OK Tapped" to the screen when the user taps OK
print("OK Tapped")
// Add the OK Button to the Alert Controller
alertController.addAction(okAction)
// Add a text field to the alert controller
alertController.addTextField (textField) in
// Observe the UITextFieldTextDidChange notification to be notified in the below block when text is changed
NotificationCenter.default.addObserver(forName: UITextField.textDidChangeNotification, object: textField, queue: OperationQueue.main, using:
_ in
// Being in this block means that something fired the UITextFieldTextDidChange notification.
// Access the textField object from alertController.addTextField(configurationHandler:) above and get the character count of its non whitespace characters
let textCount = textField.text?.trimmingCharacters(in: .whitespacesAndNewlines).count ?? 0
let textIsNotEmpty = textCount > 0
// If the text contains non whitespace characters, enable the OK Button
okAction.isEnabled = textIsNotEmpty
)
【讨论】:
以上是关于当文本字段为空时禁用警报按钮 Swift 3的主要内容,如果未能解决你的问题,请参考以下文章
当textfield为空时禁用按钮等待其他文本字段中的任何更改