マスター ビューで tableView を使用して splitView を作成し、2 つの詳細ビューで静的セルを使用して tableView を作成します (図を参照)。 アプリの構造
ビュー コントローラーの名前は次のとおりです。 DocsTableViewController - マスター ビュー (左側) DocDetailTableViewController - 詳細ビュー (右上) DocEditTableViewControler - 2 番目の詳細ビュー (右下)
DocsTVC は医師のリスト、DocDetailTVC は DocsTVC で選択された医師ユーザーの詳細であり、DocEditTVC ユーザーは DocDetailTVC に表示された医師のデータを編集したり、まったく新しいデータを追加したりできます (ユーザーが編集または追加ボタンをクリックした場合)。
詳細の表示、編集フォームの表示、編集済みまたは新規ドキュメントの保存など、これらすべてが正常に機能しています。問題は、マスター テーブル ビューです。編集/新しいアイテムを保存した後、詳細に再読み込みしようとしてprint
いますが、データは再読み込みされていますが、テーブルは表示されていません。テーブルはまだ同じように表示されており、アプリの同じ他の画面に移動してから、戻ってリロードされたテーブル ビューを表示する必要があります。私は何をすべきか?
Doctor を 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
の s によって、夕方がうまくいっていることがわかります - ビューはマスター ビューにロードされ、ドキュメントの配列は新しいカウントを書き込みます。ただし、tableView は変更されません。助けてくれてありがとう。