【问题标题】:self.name.text value change from another view controller gives fatal error:从另一个视图控制器更改 self.name.text 值会产生致命错误:
【发布时间】:2017-05-29 09:48:42
【问题描述】:

我有 viewcontrollersubviewcontroller 我想将 self.name.text 从 subViewController changeIt 函数更改为内部 viewcontroller 给我

致命错误:在展开可选值时意外发现 nil (lldb)

我该如何解决它,我的代码在下面。

子视图控制器

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{

    }

    }



}

视图控制器

    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 中)

【问题讨论】:

  • 您是否从情节提要中连接了name 的插座??
  • ViewController() 不会初始化视图。您需要从 XIB 或 Storyboard 加载视图
  • @BadhanGanesh 是已连接
  • @Vishnugondlekar 老兄这个我的视图控制器也在容器视图中

标签: ios string swift3


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    相关资源
    最近更新 更多