0

iPhoneアプリケーションでARCとストーリーボードを使用しています。ボタン付きの単純な入力テキストビューがあります。ボタンをクリックすると、タブバーコントローラーを使用してメインビューに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;

EDIT : 前のビューのボタン クリックから来る場合にのみ、この selectedIndex を呼び出します。

1 つのプロパティを 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 に答える