2017-07-04 4 views
0

Ich bin eine Reihe von ViewControllern programmgesteuert abrufen. Die Quelle dieser Viewcontroller ist in meinem Storyboard und Ich schaffe sieZugriff auf Ansicht innerhalb der Ansicht Controller programmgesteuert

let page = storyboard?.instantiateViewController(withIdentifier: "features_view_controller") 

mit Was ich tun möchte, ist, einen UILabel greife ich innerhalb dieser Viewcontroller in meinem Storyboard haben programmatisch. So etwas vielleicht?

var label = page!.view("identifer") 

Wie kann ich das tun?

+0

var label = Seite .nameOfUrLabel –

+0

Sie das Etikett durch Kennung nicht zugreifen können, wäre einfacher Option, eine @IBOutlet in Ihrem Viewcontroller zu erstellen und dann zugreifen. – suhit

Antwort

1

Sie sollten @IBOutlet Eigenschaft auf Ihre UIViewController Klasse hinzuzufügen.

class YourViewController: UIViewController { 
    @IBOutlet weak var label: UILabel! // link it with UILabel in the storyborad. 
} 

Dann können Sie einen Zugang zu UILabel haben:

if let page = UIStoryboard().instantiateViewController(withIdentifier: "features_view_controller") as? YourViewController { 
     page.label //your label, which is currently nil, because the view controller still does not draw view. 
    } 

Aber wenn Sie Update benötigen, beispielsweise das Etikett Text, dann sollten Sie „Datentransferobjekt“ vorbereitet und es passieren zu Ihrem View-Controller. Nachdem die Ansicht geladen wurde, können Sie UILabel aktualisieren. Beispiel unten:

class YourViewController: UIViewController { 
    @IBOutlet weak var label: UILabel! 
    var text: String? //text for label. 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     label.text = text 
    } 
} 

if let page = UIStoryboard().instantiateViewController(withIdentifier: "features_view_controller") as? YourViewController { 
    page.text = "Test" 
    //show page (present or push view controller) or manually send command for drawing view (page.view) 
} 
0

können Sie Tag zu Ihrem subview und Zugang geben mag: - YourController.view.viewWithTag(yoursubviewtag)

Verwandte Themen