我在主视图中使用 tableView 创建 splitView,在两个详细视图中使用静态单元格创建 tableView(参见图片)。 应用结构
视图控制器的名称是: DocsTableViewController - 主视图(在左侧) DocDetailTableViewController - 详细视图(在右上角) DocEditTableViewControler - 第二个详细视图(在右下角)
DocsTVC 是医生列表,DocDetailTVC 是在 DocsTVC 中选择的医生用户的详细信息,在 DocEditTVC 上,用户可以编辑 DocDetailTVC 中显示的医生数据或添加全新的数据(基于用户单击编辑或添加按钮)。
所有这些都运行良好 - 显示详细信息、显示编辑表单并保存已编辑或新文档。问题是主表视图。我正在尝试在保存编辑/新项目后详细重新加载它,并且print
我看到数据已重新加载,但表格未重新加载。表格显示仍然相同,我必须转到应用程序的同一其他屏幕,然后返回查看重新加载的表格视图。我应该怎么办?
在 DocEditTVC 上保存医生后,我将回到此方法的详细信息:
@IBAction func saveToDocViewController (segue: UIStoryboardSegue){
let controller = DocsTableViewController()
controller.tableView.reloadData()
print("[SPLIT VIEW] detail: \(controller.docs.count)")
}
以及来自 DocsTableViewControler(主视图)的一些代码:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
// menu
if inputsMenuButton != nil {
inputsMenuButton.target=self.revealViewController()
inputsMenuButton.action=#selector(SWRevealViewController.revealToggle(_:))
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
// navigation bar
self.navigationController?.navigationBar.barTintColor = OAKScolor().colorOAKSmain()
self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
// data load
print("[SPLIT VIEW]: ViewDidLoad")
dataLoad()
self.tableView.reloadData()
// split view
self.splitViewController?.delegate = self
self.splitViewController?.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
}
和
func dataLoad() {
print("[SPLIT VIEW]: DataLoad")
let arrayOfDocIDs = PlistManager.sharedInstance.getArrayOfValuesFromDict("DocID") as [AnyObject] as! [String]
for id in arrayOfDocIDs {
docs.append(DocData(docID: id).docLoad(false))
}
print("[SPLIT VIEW] table: \(docs.count)")
}
通过这些print
,我看到那天晚上进展顺利 - 主视图上确实加载了视图,并且文档数组写入了新计数。但是 tableView 没有改变。感谢您的任何帮助。