我正在尝试创建类似于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
}
答案 0 :(得分:2)
总结一下我们在聊天中的讨论:要更新这些标签,您只需创建IBOutlet
对标签的引用。
这里的关键问题是您在实例化视图控制器后立即尝试更新这些插座。但是在加载视图之前不会配置插座,这是在转换到新场景的过程中发生的事情。所以你应该:
在目标控制器中创建String
(或其他)属性;
在实例化视图控制器后填充这些属性。你这样做取决于你如何过渡到下一个场景:
如果以编程方式(通过showViewController
,presentViewController
或navigationController.pushViewController
)过渡到下一个场景,请在致电instantiateViewControllerWithIdentifier
后立即设置;或
如果使用segue,请在String
中设置这些prepareForSegue
属性。
在目标视图控制器的viewDidLoad
中,获取这些String
属性并更新您有“IBOutlet引用”的控件。