self.navigationController.tabBarController.selectedIndex not working

前端 未结 7 2027
野趣味
野趣味 2021-01-14 02:07

I have a UITabBarController which containing 4 different UIViewControllers.

On first tab there is a UINavigationViewController

相关标签:
7条回答
  • 2021-01-14 02:45

    If you are presenting a new controller (different from the one that's currently on screen) you should set the index in the completion block of the function to present your view controller. If you set it before it's presented, it may not work.

    In my case I've embedded the tab controller inside a nav controller. I present the new nav controller newNavContoller, and once it's presented I set the index in my tab controller tvc:

    currentViewController?.presentViewController(newNavController, animated: true, completion: {tvc.selectedIndex = selectedIndex})
    
    0 讨论(0)
  • 2021-01-14 02:54

    if set delegate Try this:

    self.selectedIndex = 1;
    

    You are the tabBarController :)

    0 讨论(0)
  • 2021-01-14 02:58

    for calling the tabbarcontroller.selectedindexyou must have to find out the tabbarcontroller from the navigation controller if you dont use push on navigationController just use topViewController property of navigationController to get the instance of your tabBarController and assign it to UITabBarController and us the selectedIndex and this will work fine

    0 讨论(0)
  • 2021-01-14 03:03

    just try

    self.tabBarController.selectedIndex = 1
    
    0 讨论(0)
  • 2021-01-14 03:08

    Do the following, before trying to change tab:

    UITabBarController *tab=self.tabBarController;
    
    if (tab){
       NSLog(@"I have a tab bar");
       [self.tabBarController setSelectedIndex:1];
    }
    else{
       NSLog(@"I don't have");
    }
    
    0 讨论(0)
  • 2021-01-14 03:09

    Try moving your tab switch code to viewDidLoad

    I verified that this works on the built in Tabbed Application template project in xcode 4

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        self.tabBarController.selectedIndex = 1;
    }
    

    I'd also take a look at your AppDelegate class for something along the lines of this

    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
    self.window.rootViewController = self.tabBarController;
    

    If you don't see these lines anywhere then you'll want to find where else in your code the UITabBarViewController is being initialized and use that object pointer instead.

    0 讨论(0)
提交回复
热议问题