2017-07-04 8 views
0

プログラムでViewControllersの束を取得しています。これらのViewControllerのソースは、私のストーリーボードにあると私は私が何をしたいのかView Controller内のビューへのプログラムによるアクセス

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

を使用して作成していプログラムで私のストーリーボードにそれのViewControllerの内側に私が持っているUILabelにアクセスすること、です。このような何か?

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

どうすればいいですか?

+0

するvarラベル=ページ.nameOfUrLabel –

+0

あなたは簡単にオプションがあなたのViewControllerに@IBOutletを作成し、それをアクセスすることであろう、識別子でラベルにアクセスすることはできません。 – suhit

答えて

1

あなたのUIViewControllerクラスに@IBOutletプロパティを追加する必要があります。

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

その後、あなたはUILabelへのアクセス持つことができます:

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. 
    } 

をしかし、あなたはアップデートが必要な場合、例えば、ラベルテキストは、その後、あなたは、「データ転送オブジェクト」を作成し、それを渡す必要がありますあなたのビューコントローラに。ビューが読み込まれた後、UILabelを更新することができます。以下の例:!

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

あなたはそれが好きで、あなたのサブビューとのアクセスにタグを与えることができます: - YourController.view.viewWithTag(yoursubviewtag)

関連する問題