Почему контроллер второго представления не появляется после загрузки представления ввода, но при нажатии на кнопку он появляется? - PullRequest
0 голосов
/ 10 июня 2018

Почему контроллер второго представления не появляется после загрузки представления ввода, но, нажав на кнопку, он появляется?

Вот мой код:

@IBAction func Pressed(_ sender: UIButton) {
    var firstName = FirstName.text;
    var lastName = LastName.text;
    let defaults = UserDefaults.standard;
    defaults.set(firstName, forKey: "FN");
    defaults.set(lastName, forKey: "LN");
    loadNextView()
}
override func viewDidLoad() {
    super.viewDidLoad()
    self.FirstName.text = "TESTAUSGABE";
    let defaults = UserDefaults.standard;
    var fn = defaults.object(forKey: "FN")
    var ln = defaults.object(forKey: "LN")
    if(fn==nil){
        self.FirstName.placeholder="Nicht angegeben"
    }
    else {
        self.FirstName.text = fn as? String
        loadNextView()
    }
    if(ln==nil){
        self.LastName.placeholder="Nicht angegeben"
    }
    else{
        self.LastName.text = ln as? String
        self.Pressed(self.SaveButton);
    }
}
func loadNextView(){
    let storyboard: UIStoryboard = UIStoryboard(name:"Main", bundle:nil);
    let newViewControler = storyboard.instantiateViewController(withIdentifier: "View2") as UIViewController
    self.present(newViewControler, animated: true, completion: nil) 
}

Iхотите проверить настройки и, если они уже установлены, автоматически появится другое представление.
Или есть другой способ, который я не знал?

1 Ответ

0 голосов
/ 10 июня 2018

Представление VC не работает внутри viewDidLoad, поскольку иерархия представлений еще не завершена. Вы можете попробовать реализовать viewDidAppear или viewWillAppear

var runOnce  = true 

//

override func viewDidAppear(_ animated:Bool){ 
  super.viewDidAppear(animated)
   if runOnce {
      loadNextView() // here read default value 
      runOnce = false 
  }
}
...