2017-07-04 145 views
0

我正在以編程方式檢索一堆ViewControllers。這些視圖控制器的來源是我的故事板,我使用以編程方式在視圖控制器中訪問視圖

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

我想要做的是,以編程方式訪問一個UILabel我有一個視圖控制器裏面我的故事板創建它們。這樣的事情可能嗎?

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

我該怎麼做?

+0

VAR標籤=頁面.nameOfUrLabel –

+0

你不能識別訪問的標籤,更容易的選擇是創建你的ViewController一個@IBOutlet,然後訪問它。 – suhit

回答

1

你應該@IBOutlet屬性添加到您的UIViewController類。

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)

相關問題