我有以下代码.prompt是一个UIAlertController.
self.presentViewController(prompt, animated: true, completion: {
prompt.textFields[0].becomeFirstResponder()
})
Run Code Online (Sandbox Code Playgroud)
但它给了我这个错误:Could not find member 'becomeFirstResponder'.
然而,如果我把它放在它的工作正常:
self.presentViewController(prompt, animated: true, completion: {
let foo = 0
prompt.textFields[0].becomeFirstResponder()
})
Run Code Online (Sandbox Code Playgroud)
当我添加如上所述的无用代码行时,为什么错误会消失?
根据《Swift 编程语言》一书有关 If 语句和强制展开的部分,
\n\n\n\n\n\xe2\x80\x9c您可以使用 if 语句来查明可选值是否包含值。如果可选值确实有值,则其计算结果为 true;如果它根本没有值,则计算结果为 false。\n 一旦您\xe2\x80\x99 确定可选值确实包含值,您就可以访问其基础值\xe2\x80\x9d
\n
UIAlertController 不必具有 textFields,因此由于textFields数组是可选的,因此您必须先将其解包,然后才能调用数组内部对象上的函数,因此它应该如下所示:
self.presentViewController(prompt, animated: true, completion: {\n if let textFields = prompt.textFields {\n textFields[0].becomeFirstResponder()\n }\n})\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |