3

マスター ビューで 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 は変更されません。助けてくれてありがとう。

4

1 に答える 1