【发布时间】:2016-09-09 18:53:39
【问题描述】:
我正在尝试创建一个类似于 iOS 设置的 关于 部分的 UITableView。我有我的初始表格视图,我动态填充(已经工作),并且每个项目都有披露指标。当我单击此视图中的某个项目时,我告诉导航控制器滑到静态 UITableView(如下图所示)。我使用它的 ID 从情节提要中实例化静态表视图,并且在转换到它之前,我想根据它从初始表视图中描述的项目用动态值填充它。基本上,如何在我的代码的静态表格视图中设置单元格的 Right Detail 部分。?
我正在寻找的伪代码是这样的(存在于初始表视图的控制器类中):
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引用,然后更新这些网点的text属性。 -
@Rob 我已经试过了。我为静态“About”表视图创建了一个控制器类并将它们转换为该控制器类,并为列出的每个详细信息填充了 IBOutlets。但是,IBOutlets 在运行时总是
nil。 -
@Rob 我认为这是因为这不是静态表视图应该使用的方式(似乎它们只打算与情节提要中设置的值一起使用)。跨度>
-
那是因为您在实例化视图控制器后立即尝试使用这些插座,而不是等待目标控制器的视图被加载(例如,直到 @987654327 之后您才能引用插座@ 在该目标场景中被调用,这通常发生在稍后,在呈现/显示该场景的过程中)。另外,顺便说一句,如果您有
IBOutlet从单元格直接到视图控制器的引用,那么您不需要这样做getCell的东西。如果你愿意,你可以,但它比它需要的更复杂。 -
@Rob 谢谢!是的,我最初有诸如
serverName之类的网点,并称为descriptionView.serverName.text = <some String>。我没有想到视图可能还没有加载的事实。无论如何我可以强制视图加载一个我从情节提要获得参考的视图吗?我宁愿不要弄得乱七八糟,而是在实例化后立即处理表填充。另外,如果你写的是答案而不是评论,我会选择它。
标签: ios swift uitableview storyboard