我有一个UITabBarController
其中含有4个不同UIViewControllers
。
在第一个选项卡有一个UINavigationViewController
包含其子UIViewController
。 而不攻标签栏,我想利用用户的第二个选项卡上。 为此,我尝试:
self.navigationController.tabBarController.selectedIndex = 1;
但它不工作。
忽略任何错误,我是新手。
谢谢。
我有一个UITabBarController
其中含有4个不同UIViewControllers
。
在第一个选项卡有一个UINavigationViewController
包含其子UIViewController
。 而不攻标签栏,我想利用用户的第二个选项卡上。 为此,我尝试:
self.navigationController.tabBarController.selectedIndex = 1;
但它不工作。
忽略任何错误,我是新手。
谢谢。
做到以下几点,试图改变标签之前:
UITabBarController *tab=self.tabBarController;
if (tab){
NSLog(@"I have a tab bar");
[self.tabBarController setSelectedIndex:1];
}
else{
NSLog(@"I don't have");
}
如果设置委托试试这个:
self.selectedIndex = 1;
您是第tabBarController :)
试一试
self.tabBarController.selectedIndex = 1
请尝试移动标签切换代码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正在初始化,并使用该对象的指针来代替。
用于调用tabbarcontroller.selectedindex
你必须找出从导航控制器tabbarcontroller如果你不使用按键上的navigationController只需使用navigationController的topViewController属性来获取你的tabBarController的实例,并将其分配到的UITabBarController和我们的selectedIndex,这将做工精细
我们应该把后续部分viewDidAppear。
- (void)viewDidAppear:(BOOL)animated
{
NSArray *ary = [self.tabBarController viewControllers];
UIViewController *vc = ary[3];
[self.tabBarController setSelectedIndex:3];
[self.tabBarController setSelectedViewController:vc];
}
如果你提出一个新的控制器(从一个最当前屏幕不同),你应该设置在函数完成块出示您的视图控制器的索引。 如果你设置它的呈现之前,它可能无法正常工作。
在我来说,我已经嵌入导航控制器内选项卡控制器。 我提出了新的导航控制器newNavContoller
,一旦它提出我在标签控制器设置索引tvc
:
currentViewController?.presentViewController(newNavController, animated: true, completion: {tvc.selectedIndex = selectedIndex})