簡體   English   中英

如何以編程方式從情節提要中填充靜態UITableView?

[英]How to programmatically populate a static UITableView from the storyboard?

我正在嘗試創建類似於iOS設置的“ 關於”部分的UITableView。 我有我的初始表視圖,該表視圖是我動態填充的(已經在工作),並且每個表項都有公開指示器。 當我單擊該視圖中的項目時,我告訴導航控制器滑到靜態UITableView(如下圖所示)。 我使用情節提要的ID實例化了情節提要中的靜態表格視圖,並在過渡到它之前,我想根據其在初始表格視圖中所描述的項,用動態值填充它。 基本上,如何在代碼的靜態表格視圖中設置單元格的“ 右詳細信息”部分。

靜態UITableView。

我正在尋找的偽代碼是這樣的(存在於初始表視圖的控制器類中):

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

  let customData: [String:String] = getDataForCell(atIndexPath: indexPath)
  let descriptionView = storyboard?.instantiateViewControllerWithIdentifier("keyDetails") as! KeyDetailsController

  descriptionView.getCell(forRow: 0, inSection: 0).rightDetail.text = customData["serverName"]! // changes "A Fake Server" to an actual server name

}

總結一下我們在聊天中的討論:要更新這些標簽,只需創建對標簽的IBOutlet引用。

此處的關鍵問題是,您在實例化視圖控制器后立即嘗試更新這些出口。 但是,在加載視圖之前,不會配置出口,這是在過渡到新場景的過程中發生的事情。 因此,您應該:

  • 在目標控制器中創建String (或其他)屬性;

  • 實例化視圖控制器后,填充這些屬性。 您在哪里執行此操作取決於您如何過渡到下一個場景:

    • 如果過渡到下一個場景編程方式(通過showViewControllerpresentViewControllernavigationController.pushViewController ),然后設置這些權之后您調用instantiateViewControllerWithIdentifier ; 要么

    • 如果使用segue,請在prepareForSegue設置這些String屬性。

  • 在目標視圖控制器的viewDidLoad中,獲取這些String屬性並更新具有`IBOutlet引用的控件。

有關更多信息,請參見在視圖控制器之間傳遞數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM