self.navigationController.tabBarController.selecte

2019-06-24 07:41发布

我有一个UITabBarController其中含有4个不同UIViewControllers

在第一个选项卡有一个UINavigationViewController包含其子UIViewController 。 而不攻标签栏,我想利用用户的第二个选项卡上。 为此,我尝试:

self.navigationController.tabBarController.selectedIndex = 1;

但它不工作。

忽略任何错误,我是新手。

谢谢。

Answer 1:

做到以下几点,试图改变标签之前:

UITabBarController *tab=self.tabBarController;

if (tab){
   NSLog(@"I have a tab bar");
   [self.tabBarController setSelectedIndex:1];
}
else{
   NSLog(@"I don't have");
}


Answer 2:

如果设置委托试试这个:

self.selectedIndex = 1;

您是第tabBarController :)



Answer 3:

试一试

self.tabBarController.selectedIndex = 1


Answer 4:

请尝试移动标签切换代码viewDidLoad中

我验证了这个工程的建成选项卡式应用程序模板项目在Xcode 4

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

我也想看看你的AppDelegate类沿此线的东西

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

如果您没有看到这些行的任何地方,你会想找到其他地方在代码中UITabBarViewController正在初始化,并使用该对象的指针来代替。



Answer 5:

用于调用tabbarcontroller.selectedindex你必须找出从导航控制器tabbarcontroller如果你不使用按键上的navigationController只需使用navigationController的topViewController属性来获取你的tabBarController的实例,并将其分配到的UITabBarController和我们的selectedIndex,这将做工精细



Answer 6:

我们应该把后续部分viewDidAppear。

    - (void)viewDidAppear:(BOOL)animated
{
NSArray *ary = [self.tabBarController viewControllers];
    UIViewController *vc = ary[3];
    [self.tabBarController setSelectedIndex:3];
    [self.tabBarController setSelectedViewController:vc];
}


Answer 7:

如果你提出一个新的控制器(从一个最当前屏幕不同),你应该设置在函数完成块出示您的视图控制器的索引。 如果你设置它的呈现之前,它可能无法正常工作。

在我来说,我已经嵌入导航控制器内选项卡控制器。 我提出了新的导航控制器newNavContoller ,一旦它提出我在标签控制器设置索引tvc

currentViewController?.presentViewController(newNavController, animated: true, completion: {tvc.selectedIndex = selectedIndex})


文章来源: self.navigationController.tabBarController.selectedIndex not working