我有viewcontroller
和subviewcontroller
我想从subViewController
changeIt
函数更改self.name.text到viewcontroller
内部给我
致命错误:在展开Optional值时意外发现nil (lldb)
我如何解决它,我的代码如下。
subViewController
import UIKit
import CoreData
class subViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if prefs.string(forKey: "session") == "yes" {
let newname = prefs.string(forKey: "name")
ViewController().changeIt(name : newname)
}else{
}
}
}
的ViewController
import UIKit
import CoreData
class ViewController: UIViewController {
@IBOutlet weak var name: UITextField!
class func sharedInstance() -> ViewController {
struct Singleton {
static var sharedInstance = ViewController()
}
return Singleton.sharedInstance
}
override func viewDidLoad() {
super.viewDidLoad()
}
public function changeIt(name : String){
print("New Name \(name)") /// WORKS!!
self.name.text = "\(name)" /// GIVES FATAL ERROR
}
}
(* ViewController也在ContainerView内)
答案 0 :(得分:0)
你不能直接从另一个控制器设置IBOutlet而是声明一个变量var tempName
设置在你以前的控制器中并使用这个变量设置你的文本字段self.name.text = tempName
希望这可以帮助你