2017-01-12 3 views
1

通常、UINavigationControllerに埋め込まれたUITableViewControllerがその詳細画面から戻されると、前に選択した行の表示が消えます。PageViewControllerに埋め込まれているときにUITableViewControllerのUITableViewの行を選択解除

UITableViewControllerUIPageViewControllerによってロードされているが、これまでに失敗している場合、この現象を再現しようとしています。 UINavigationController>UIPageViewController>UITableViewController>DetailController

が呼び出されないviewDidAppearとしてUITableViewControllerviewDidAppeardeselectRow:atIndexPath:テーブルビューメソッドを置く:詳細画面にあるとき

は、私の階層明確にすること。それを同じ方法で入れますが、 UIPageViewControllerの動作ですが、選択が消えるまでにはかなりの遅延があります。

これを正常に動作させることができた人は誰ですか?

+0

同じ問題を抱えていると...固定したときに応答します(次の30分) – Jake

答えて

0

あなたは、私が のUITableViewControllerはUINavigationControllerによってロードされたときに、この動作を再現しようとしていますUITableViewまたはここUITableViewController

を参照しているが、これまでのところ成功していません。

UITableViewControllerの場合は、clearsSelectionOnViewWillAppearというプロパティがあります。デフォルトはtrueです。

+0

この場合、問題は呼び出されていません。私の質問を階層で更新します – jjatie

0

ない理想的なソリューションが、これは私の作品...

テーブルビューコントローラのコードの変更:

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    self.tableView.reloadData() //added this 
} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "appCell") as! AppTableViewCell 
    cell.app = apps[indexPath.row] 
    cell.delegate = self 
    cell.reset() //added this 
    return cell 
} 

テーブルビューセルのコードの変更:基本的に

//added this method 
func reset() { 
    shortcutTypesTableView.reloadData() 
} 

、Iテーブル全体のビュー全体を再読み込みし、tableView(_:cellForRowAt:)私は各セルのテーブルビューもリロードするように各セルをリセットするように指示しています。

パフォーマンスの違いに気づかないうちに、このテーブルビューをロードすると(少なくともまだ)私のアプリにオーバーヘッドはあまりありません。しかし、私はこのソリューションをパフォーマンスにとって「理想的」とは呼んでいません。

+0

'viewWillAppear'は決して私のために呼び出されません – jjatie

関連する問題