使用presentmodalview将tabSelectedIndex实现到tabBarController到tabbarcontroller

时间:2012-09-05 09:21:07

标签: iphone uitabbarcontroller presentmodalviewcontroller

我在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选项卡上。

2 个答案:

答案 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;
}