在中ViewController.swift
,我有一个文本字段,我想在其他课程中使用和操纵其输入Conjugate.swift
。我在隐藏键盘的同时捕获输入,如下所示:
import UIKit
class MainViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var mainTextField: UITextField!
var input: String!
override func viewDidLoad() {
super.viewDidLoad()
mainTextField.delegate = self
}
/* KEYBOARD HIDE */
func textFieldShouldReturn(textField: UITextField) -> Bool {
input = self.mainTextField.text
textField.resignFirstResponder()
return true;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
然后在我的另一堂课中:
class Conjugate {
var infinitive: String!
var isEndingAr = false
func conjugate() {
// gets verb from text field
infinitive = MainViewController().input
// checks verb ending and sets value to booleans
if (infinitive.hasSuffix("ar")) {
isEndingAr = true
}
}
}
这是我得到的错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
我知道input
inMainViewController.swift
仍然为零。我只是不知道为什么。我究竟做错了什么?
完成后infinitive = MainViewController().input
,MainViewController()
只需创建一个新实例MainViewController
。这个新实例永远不会调用textFieldShouldReturn
,因此input
它将是nil
。相反,从添加引用Conjugate
到MainViewController
。
var mainViewController: MainViewController?
然后在中textFieldShouldReturn
创建Conjugate
并分配其属性:
let conjugate = Conjugate()
conjugate.mainViewController = self
然后在conjugate()
方法中,而不是创建新的视图控制器,请参考属性:
func conjugate() {
// gets verb from text field
infinitive = self.mainViewController!.input!
// checks verb ending and sets value to booleans
if (infinitive.hasSuffix("ar")) {
isEndingAr = true
}
}
}
另外,就像@emresancaktar所说的那样,input
应该是可选的,因为它可能为nil。但是,infinitive
不必是可选的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句