如何在 Swift 3 中使用 UITextFields 创建开关表达式
Posted
技术标签:
【中文标题】如何在 Swift 3 中使用 UITextFields 创建开关表达式【英文标题】:How to create a switch expression with UITextFields in Swift 3 【发布时间】:2016-11-05 04:36:06 【问题描述】:我想检查我的UITextFields
的.text
状态。在!= ""
上执行一个函数并显示一个警报视图if == ""
。因为我有 5 个不同的 UITextFields
,所以我想到了一个 switch
声明。
@IBAction func doneButton(_ sender: Any)
let indexPath = IndexPath(row: 0, section: 0)
let cell = self.tableView.cellForRow(at: indexPath) as! SetupCell
var textFields: [UITextField] = []
textFields = [cell.nameTF,
cell.townTF,
cell.birthdayTF,
cell.genreTF,
cell.deejayTF]
for tf in textFields
print("called") // is printed
if tf.text != ""
print("not empty") // is printed
switch UITextField()
case cell.nameTF:
saveCredential(ME, "name", cell.nameTF.text!)
case cell.birthdayTF:
saveCredential(ME, "birthday", cell.birthdayTF.text!)
case cell.townTF:
saveCredential(ME, "town", cell.townTF.text!)
case cell.deejayTF:
saveCredential(ME, "deejayName", cell.deejayTF.text!)
case cell.genreTF:
saveCredential(ME, "genre", cell.genreTF.text!)
default:
break
else
print("is empty") // printed
switch UITextField()
case cell.nameTF:
presentAlertView(self, title: "Error", message: "Name missing")
case cell.birthdayTF:
presentAlertView(self, title: "Error", message: "Birthday missing")
case cell.townTF:
presentAlertView(self, title: "Error", message: "Town missing")
case cell.deejayTF:
presentAlertView(self, title: "Error", message: "Deejay name missing")
case cell.genreTF:
presentAlertView(self, title: "Error", message: "Genre missing")
default:
break
但是switch
语句中的代码没有被执行。如果是空的,也不是,如果不是。我相信问题可能出在switch UITextField()
,但我想不出解决方案。我错过了什么?非常感谢您的帮助。
PS。 saveCredential
和 presentAlertView
在应用程序的其他部分完美运行,所以这可能不是问题。但可以肯定的是:
func presentAlertView(_ vc: UIViewController, title: String, message: String?)
var alert = UIAlertController(title: title, message: nil, preferredStyle: UIAlertControllerStyle.alert)
if message != nil
alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
vc.present(alert, animated: true, completion: nil)
【问题讨论】:
【参考方案1】:问题是您使用switch
语句传递UITextFiled
的新实例,而不是从Array
传递对象。
switch tf
而不是
switch UITextField()
【讨论】:
谢谢你,成功了。会尽快接受 @DavidSeek 欢迎朋友 :)以上是关于如何在 Swift 3 中使用 UITextFields 创建开关表达式的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 3.0 中编写此代码,特别是如何在 swift3 中使用宏?
如何在 Swift 3 中使用 NSLocale 获取国家代码
如何在 Swift 3 中使用 UnsafeMutablePointer?