0

私のタブベースのアプリでは、プログラムで 4 つのタブを持つタブバー アプリを作成しました。最初のタブには 5 つの画面があり、3 つ目のタブには 3 つの画面があります。

最初のタブの 2 番目の画面で 1 つのボタンをクリックすると、3 番目のタブの 2 番目の画面に移動する必要があります。しかし、今では3番目のタブで最後に開いた画面に行きます。

例: tabControllers: a、b、c、d

a tab: 1->2>3>4>5

C  tab:  1>2>3

選択したタブは: & 画面は: 3 &

その画面のボタンをクリックして移動します

選択されたタブはCで、画面は2番目です

参照リンクは: Change the selected TabBar index on button click

私のコードは次のとおりです。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 //for home tab..
    UINavigationController *nav1 = [[UINavigationController alloc] init];
    UIViewController *viewController1 = [[[CarAccidentAppViewController alloc] initWithNibName:@"CarAccidentAppViewController_iPhone" bundle:nil] autorelease];
    nav1.viewControllers = [NSArray arrayWithObjects:viewController1, nil];

    //for steps tab...
    UINavigationController *nav2 = [[UINavigationController alloc] init];
    UIViewController *viewController2 = [[[FirstSteps alloc] initWithNibName:@"FirstSteps" bundle:nil] autorelease];
    nav2.viewControllers = [NSArray arrayWithObjects:viewController2, nil];

    //for profiles tab...
    UINavigationController *nav3 = [[UINavigationController alloc] init];
    UIViewController *viewController3 = [[[Profiles alloc] initWithNibName:@"Profiles" bundle:nil] autorelease];
    nav3.viewControllers = [NSArray arrayWithObjects:viewController3, nil];

    //for contact us tab...
    UINavigationController *nav4 = [[UINavigationController alloc] init];
    UIViewController *viewController4 = [[[ContactUs alloc] initWithNibName:@"ContactUs" bundle:nil] autorelease];
    nav4.viewControllers = [NSArray arrayWithObjects:viewController4, nil];


    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1,nav2,nav3,nav4 ,nil];

    self.window.rootViewController=self.tabBarController;
      [self.window makeKeyAndVisible];
    return YES;

}

//Button click event 
-(IBAction)btnNewDriverPressed:(id)sender
{
    [[NSUserDefaults standardUserDefaults]setInteger:0 forKey:@"showselectedIndex"];
    self.tabBarController.selectedViewController=[self.tabBarController.viewControllers 
objectAtIndex:2];
}
4

2 に答える 2

0

申し訳ありませんが、動作させることができません。最初の画面で[C]タブを表示している場合は、いずれかのボタンをクリックするだけで2番目の画面に移動します。cタブを押すと、ボタンを押さずに2番目のViewControllerがナビゲーションコントローラに読み込まれることはありません。したがって、自分で2番目の画面に移動し、[c]タブも選択する必要があります。しかし、私の意見では、それが好きな場合、アプリのデザインは良くありません。最高のユーザーエクスペリエンスを提供することはできません。

于 2012-09-19T11:44:50.380 に答える
0

実際に達成したいことを説明する画像付きのフローをアップロードしてください。

あなたの欲望をナビゲートviewcontroller/メソッドscreenを使用して.initwithnibname

従う :

self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[self.navigationController pushViewController:self.viewController animated:YES];
于 2012-09-19T11:22:23.850 に答える