检测何时从App Delegate通过UITabBarController按下tabBar项

Sam*_*007 6 objective-c uitabbarcontroller uitabbaritem uitabbar ios

我知道这个问题已被问过几次了,但是当我UITabBarControllerAppDelegate课堂上看到这个问题时,我仍然坚持这个问题.

self.tabBarController.viewControllers = 
     @[aboutUsNavController,myProfileNavController,
      projectsListNavController, feedsNavController,homeViewController];
Run Code Online (Sandbox Code Playgroud)

现在我想要的是在TabBar项目中feedsNavController 没有 进行任务viewWillAppear(因为它正在推动一个过detailViewnavigationController).

我在同一个类中设置了委托来执行UITabBarController委托方法:

 AppDelegate *appDelegate = 
         (AppDelegate *)[[UIApplication sharedApplication] delegate];
appDelegate.tabBarController.delegate = self;
Run Code Online (Sandbox Code Playgroud)

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController只有当我切换TabBar项目时才有效,但不是第一次

我有什么方法可以打电话UITabBarDelegate:

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
Run Code Online (Sandbox Code Playgroud)

为了在tabBar item按下时获得参考?

或任何其他方法将不胜感激.

Sam*_*007 11

弄清楚这样做的方法:

实际上UITabBarControllerDelegate只有在加载了特定选项卡时才调用方法.

因此,我[self getFeedsFromServer];viewDidLoad(第一次)执行任务,然后再执行

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    NSLog(@"Selected INDEX OF TAB-BAR ==> %i", tabBarController.selectedIndex);

    if (tabBarController.selectedIndex == 3) {
      [self getFeedsFromServer];
    }
}
Run Code Online (Sandbox Code Playgroud)

像我想的那样工作!