0

タブバー付きのiOS用アプリを開発しています。バーには5つ以上のボタンがあるので、iPhoneにはもっとボタンがあります。ここで、次のボタンがあるとします。Button1 Button2 Button3 Button4 More(およびMore内)Button5Button6。[その他]、[Button5]の順にクリックすると、Button5に関連するビューが表示されます。次に、Button2(Moreにはありません)をクリックして、Button2に関連するビューに移動します。ここまでは順調ですね。[その他]をクリックすると、[その他]タブではなく、Button5に関連するビューに戻ります。より多くのボタンを常により多くのビューに移動させるにはどうすればよいですか?

4

4 に答える 4

1

ボタンを追加する必要はありません。ビューコントローラをUITabBarControllerに設定するだけです

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated

ビューコントローラが5つ以上ある場合は、ボタンが自動的に追加されます。つまり、NSArrayの数が5を超えています。

于 2013-03-27T10:38:10.013 に答える
0

もう1つの方法は、ユーザーがさらに押すたびに、最初のボタンが削除され、他のボタンが追加されることです。基本的に、配列を作成し、その中にすべてのボタンを保持することができます。そして、押されたボタンに基づいて、その特定のビューに移動できます。

例:

最初にあなたは持っています: Button1 Button2 Button3 Button4 Next

[次へ]をクリックした後:Prev Button3 Button4 Button5 Button6

于 2013-03-27T10:05:59.873 に答える
0

このコードをアプリdelegate.mで使用して、問題を解決しました

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    UITabBarController* tabBarController2 = (UITabBarController*)self.window.rootViewController;
    if (tabBarController2.selectedIndex < 4) {
        [tabBarController2.moreNavigationController popViewControllerAnimated:NO];
    }
}
于 2013-03-28T08:24:48.630 に答える
0
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *viewController1 = [[UIViewController alloc] init];
    UIViewController *viewController2 = [[UIViewController alloc] init];
    UIViewController *viewController3 = [[UIViewController alloc] init];
    UIViewController *viewController4 = [[UIViewController alloc] init];
    UIViewController *viewController5 = [[UIViewController alloc] init];
    UIViewController *viewController6 = [[UIViewController alloc] init];
    UIViewController *viewController7 = [[UIViewController alloc] init];
    UIViewController *viewController8 = [[UIViewController alloc] init];
    UIViewController *viewController9 = [[UIViewController alloc] init];

    [viewController1.view setBackgroundColor:[UIColor whiteColor]];
    [viewController2.view setBackgroundColor:[UIColor redColor]];
    [viewController3.view setBackgroundColor:[UIColor greenColor]];
    [viewController4.view setBackgroundColor:[UIColor grayColor]];
    [viewController5.view setBackgroundColor:[UIColor blueColor]];
    [viewController6.view setBackgroundColor:[UIColor yellowColor]];
    [viewController7.view setBackgroundColor:[UIColor brownColor]];
    [viewController8.view setBackgroundColor:[UIColor magentaColor]];
    [viewController9.view setBackgroundColor:[UIColor purpleColor]];

    [viewController1 setTitle:@"one"];
    [viewController2 setTitle:@"two"];
    [viewController3 setTitle:@"three"];
    [viewController4 setTitle:@"four"];
    [viewController5 setTitle:@"five"];
    [viewController6 setTitle:@"six"];
    [viewController7 setTitle:@"seven"];
    [viewController8 setTitle:@"eight"];
    [viewController9 setTitle:@"nine"];

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = @[viewController1, viewController2, viewController3, viewController4, viewController5, viewController6, viewController7, viewController8, viewController9];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

私が試したサンプルのAppDelegateコードを追加しましたが、それは私にとってはまったく問題なく機能します。これであなたがどんな問題を抱えているか教えてください。

于 2013-03-28T09:31:33.763 に答える