0

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

4

2 回答 2

0

试试这个

self.tabBarController.selectedIndex = 1; // Your desired index

tabBarController 属性内置于 UIViewController。

或者

在尝试更改选项卡之前执行以下操作:

UITabBarController *tab=self.tabBarController;  

如果您使用过导航控制器,那么

UITabBarController *tab = self.navigationBar.tabBarController

进而

if (tab){
   NSLog(@"I have a tab bar");
   [self.tabBarController setSelectedIndex:1];
}
else{
   NSLog(@"I don't have");
}
于 2012-09-05T09:28:54.337 回答
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;
}
于 2012-09-05T09:52:48.207 回答