2016-11-24 8 views
0

私はVC1、VC2として私viewControllersをrefferするつもりです...検出タブバー項目選択簡略化のため

は、私は私のルートviewControllerとしてTabBarControllerを持っています。 3つのタブがあり、それぞれにUITableViewControllerが含まれています。だから私はTabBarControllerのインデックス0にVC1を持っています。インデックス1とVC3とインデックス2にVC2があります。今度は、インデックス0のユーザがVC1に行くためにTabBarControllerをタップするたびに検出したいと思います。私はUITabBarDelegateを使って次のように試しました。

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) { 

    if self.tabBarController?.selectedIndex == 0 { 
     // do something 
    } 
} 

VC1からVC2に移動し、VC2からVC1に戻ったときに動作します。しかし、VC1からVC3に行ってからVC1に戻っても動作しません。なぜ誰かが説明できますか?

私が実際に達成したいのは、ユーザーがVC2またはVC1からVC3に行くことです。今ユーザはVC4にかかるtableViewCellをタップします。ユーザーがVC1に復帰するたびに、webServiceを呼び出す必要があります。

+1

どのように設定しますかそう? –

+0

'VC2'と' VC3'に同じコードを適用すると、 'override func viewDidAppear(_ animated:Bool){ self.tabBarController?.selectedIndex == 0 { print(" vc1 ")} 'selectedIndex' 1,2で...? – Joe

答えて

-1

私があなたを正しく理解していれば、以下のように試してみることができます。まず以下のようなView Controllerを確認してみてください

if ([instance1 isKindOfClass:[CustomUIViewController class]]) { 
    // then call web service. 
} 

これで問題は解決します。

0

あなたがあなたの代わりにテストtabcontrollerのselectedIndexの、caluculate選択されたインデックスを自分のTabBarの

0

上の任意の項目を選択したときにこのメソッドが呼び出されますUITabBarController

にこの delegateメソッドを使用する
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 

} 

が必要になります。

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) { 

    let selectedIndex = tabBarController.viewControllers.index(of: viewcontroller)! 
    if selectedIndex == 0 { 
     // do something 
    } 

}

関連する問題