我在iphone应用程序中使用ARC和Storyboard。我有简单的输入文本视图和按钮,单击按钮我正在使用Tabbarcontroller将presentModalvuewcontroller实现到主视图。它工作正常。现在我需要有条件地实现setSelectedIndex:1到tabbarcontroller这是我正在使用的代码:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
ViewController *viewCon = (ViewController*)[storyboard instantiateViewControllerWithIdentifier:@"MainTab"];
viewCon.tabBarController.selectedIndex= 1;
[self presentModalViewController:viewCon animated:YES];
它工作正常。不能更改标签。它显示在默认的0选项卡上。
答案 0 :(得分:0)
试试这个
self.tabBarController.selectedIndex = 1; // Your desired index
tabBarController属性内置于UIViewController。
或
在尝试更改标签之前,请执行以下操作:
UITabBarController *tab=self.tabBarController;
如果您使用了导航控制器,那么</ p>
UITabBarController *tab = self.navigationBar.tabBarController
然后
if (tab){
NSLog(@"I have a tab bar");
[self.tabBarController setSelectedIndex:1];
}
else{
NSLog(@"I don't have");
}
答案 1 :(得分:0)
在ViewController的viewDidLoad中添加以下行:
self.tabBarController.selectedIndex = 1;
编辑:仅在来自上一个视图的按钮单击时调用此selectedIndex。
制作一个属性BOOL标志;在appDeleagete。
现在最初将是self.flag = FALSE;在应用程序didFinishLaunching。
所以在上一个视图的按钮上单击。
-(void)btnBackClicked:(id)sender
{
AppDelegate *objAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
objAppDelegate.flag = TRUE;
........
}
现在在ViewController的viewDidLoad中添加以下行:
AppDelegate *objAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if(objAppDelegate.flag)//if from previous then only tabbar has selected index 1
{
self.tabBarController.selectedIndex = 1;
}