2015-11-25 2 views
3

Поскольку я пытаюсь обновить содержимое представления контейнера из его родительского контроллера представления с помощью функции.ContainerView, встроенный в ViewController: Outlets is nil

После обновления начальных наборов ViewDidLoad. Приложение аварийно завершает работу. Кажется, что все Outlets становятся nil

+0

, что вы имеете в виду обновление? Сбой приложения с какой ошибкой? Outlets ноль или ничто (вы можете распечатать что-то в viewDidLoad перед сбоем, если да, дайте нам то, что внутри вас - viewDidLoad)? Что у вас есть в представлении «Контейнер»? – kholl

+0

У меня прекрасный рабочий Parse Query. Он работает, когда у меня есть один View Controller без представлений контейнера. С точки зрения UI лучше иметь контейнер. Каждый раз, когда я прокручиваю контроллер Container View, вызывается функция Update, которая обновляет ярлыки и изображения. – JVS

ответ

5

Вам нужно получить ссылку на контроллер вида в виде контейнера, а затем у вас должен быть доступ ко всем его выходам. Назначьте идентификатор segue для segue контроллеру представления контейнера и получите ссылку при вызове segue.

Например, чтобы обновить метку в контроллере просмотра контейнера с кнопки в родительском контроллере представления.

Родитель-контроллер:

import UIKit 

class ViewController: UIViewController { 
    var containerVC : ContainerVC! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    } 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
    if (segue.identifier == "segueContainer") 
     { 
      containerVC = segue.destinationViewController as! ContainerVC 
     } 
    } 


@IBAction func butUpdateContainerLabelAction(sender: AnyObject) { 
    if containerVC != nil{ 
      containerVC.lblDemo.text = "some new text" 
     } 
    } 

} 

Контейнер View Controller

class ContainerVC: UIViewController { 

@IBOutlet weak var lblDemo: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
    } 
} 
+0

Спасибо большое! Это помогло мне :)! – JVS