如何以编程方式从故事板中填充静态UITableView?

时间:2016-09-09 18:53:39

标签: ios swift uitableview storyboard

我正在尝试创建类似于iOS设置的关于部分的UITableView。我有我的初始表视图,我动态填充(已经工作),并且其每个项目都有披露指标。当我点击此视图中的项目时,我告诉导航控制器滑到静态UITableView(如下图所示)。我使用其ID从故事板中实例化静态表视图,在转换到它之前,我想根据它从初始表视图中描述的项目用动态值填充它。基本上,如何在我的代码中的静态表视图中设置单元格的 Right Detail 部分。?

The static 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

}

1 个答案:

答案 0 :(得分:2)

总结一下我们在聊天中的讨论:要更新这些标签,您只需创建IBOutlet对标签的引用。

这里的关键问题是您在实例化视图控制器后立即尝试更新这些插座。但是在加载视图之前不会配置插座,这是在转换到新场景的过程中发生的事情。所以你应该:

  • 在目标控制器中创建String(或其他)属性;

  • 在实例化视图控制器后填充这些属性。你这样做取决于你如何过渡到下一个场景:

    • 如果以编程方式(通过showViewControllerpresentViewControllernavigationController.pushViewController)过渡到下一个场景,请在致电instantiateViewControllerWithIdentifier后立即设置;或

    • 如果使用segue,请在String中设置这些prepareForSegue属性。

  • 在目标视图控制器的viewDidLoad中,获取这些String属性并更新您有“IBOutlet引用”的控件。

有关详细信息,请参阅Why can't a <button> element contain a <div>?