2015-06-05 2 views
2

Я создал контроллер навигации с контроллером просмотра внутри, содержащий метку. Эту метку следует изменить, когда контроллер просмотра загружается при нажатии кнопки.UILabel Swift/Storyboard возвращает nil

class ViewController: UIViewController { 
    @IBOutlet weak var btnEmergency: UIButton! 


    override func viewWillAppear(animated: Bool) { 
     self.btnEmergency.backgroundColor = UIColor.redColor(); 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    @IBAction func btnEmergencyTapped(sender: AnyObject) { 
     let emergencyViewController = storyboard?.instantiateViewControllerWithIdentifier("EmergencyViewController") as! EmergencyViewController 
     emergencyViewController.emergencyLabel?.text = "Notruf" 
     navigationController?.pushViewController(emergencyViewController, animated: true) 
    } 
} 

Но текст ярлыка не изменяется при загрузке. Я относительно новичок в SWIFT, поэтому я стараюсь изучить свои канаты в данный момент, используя опционные. Поэтому я предполагаю, что причина в том, что метка еще не создана при загрузке представления при нажатии кнопки. Поэтому отображается текст по умолчанию, а не текст, который я хочу отобразить на экране.

Я немного застрял на данный момент, как правильно изменить текст метки, когда это является необязательным. Поэтому, я думаю, я не могу ожидать, что ярлык будет там, когда я его назову. Но как я могу справиться с этим правильно?

+0

Вы можете совместно использовать initViewController init? –

ответ

2

Вместо этого, правильный путь, чтобы установить свойство вашего emergencyViewController.

В вашем emergencyViewController viewDidLoad установить текст надписи в соответствии со свойством, установленным ранее.

Все, что вы делаете между Initialize из более ViewController в viewDidLoad не вступит в силу.

Смежные вопросы