从另一个视图控制器更改self.name.text值会产生致命错误:

时间:2017-05-29 09:48:43

标签: ios string swift3

我有viewcontrollersubviewcontroller我想从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内)

1 个答案:

答案 0 :(得分:0)

你不能直接从另一个控制器设置IBOutlet而是声明一个变量var tempName设置在你以前的控制器中并使用这个变量设置你的文本字段self.name.text = tempName希望这可以帮助你