2012-01-12 8 views
0

私は3つのタブiOSのタブ付きアプリケーションでテーブルビューを使用すると、テーブルビューのタブをリセットする方法は?初心者。

最初のタブとタブ付きアプリケーションを持っているが、テーブルビュー 第二及び第三のタブが単一のページビューである

ユーザはビュー1のテーブルセルをクリックすると、新しいビューがあります戻るボタンを押して表のセルに移動します。

ここで、タブ2をクリックしてからタブ1に戻るとします。タブ1にプッシュされた新しいビューは引き続き表示されます。私が望むのは、別のタブを使ってテーブルビューから離れるときにテーブルビューを「リセット」して、プッシュされた新しいビューの代わりにテーブルビューが表示されるようにすることです。

+0

これは、iOSの「通常の」ユーザーエクスペリエンスに逆行します。タブを切り替えるときにユーザーが「やり直したい」と思うのはなぜですか? –

答えて

0

私はElJayのコメントに同意するが、新しいタブが選択されたときに質問がUITabBarControllerDelegate

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 

を使用答えるためには、現在の1がtabBarControllerのタブ1 selectedIndexプロパティがあるかどうかを確認し、もしそうならpopToRootViewController:

0

他の人が言ったように、これはおそらくユーザーエクスペリエンスが良いとは言えません。タブコントローラーのアイデアは、ユーザーがアプリのさまざまな部分を自由に切り替えて、前に行ったことに戻ることができるということです。

このようにする場合は、ナビゲーションビューコントローラのルートビューコントローラをカスタムサブクラスにして、タブバーコントローラのデリゲートとして設定します。カスタムビューコントローラで

、以下のように、関数shouldSelect()を実装します。

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool 
{ 
    if viewController == self.navigationController { 
    self.navigationController.popToRootViewController() 
    } 
    return true 
} 

開示:私は上記のコードをコンパイルしようとしていませんが、あまりテストを。

関連する問題