1

そのため、私のアプリではストーリーボードを使用しており、頭文字viewControllerUITabBarControllerです。私がやりたいのは、アプリの起動時に、tabBarController3つまたは4つのアイテムがあるかどうかを設定できるようにすることです。そこで、appDel天気をチェックして、ユーザーに3つまたは4つのタブが表示されるようにし、それtabBarControllerを反映する必要があります。 。

をサブクラス化しようとしtabBarControllerましたが、機能しません。

@implementation TabBarController

-(id) init{
    if ((self = [super init])) {
        [[[[self tabBar] items] objectAtIndex:2] setEnabled:YES];
        [[[[self tabBar] items] objectAtIndex:3] setEnabled:NO];
        [[[[self tabBar] items] objectAtIndex:3] setHidden:YES];  
    }
    return self;
}
@end

どんな助けでも認められるでしょう。前もって感謝します。

4

1 に答える 1

4

これを行うためのより簡単な(おそらく最善ではない)方法は、TabBarコントローラーを最初のビューコントローラーではなく、2つのタブバーコントローラーを作成することだと思います。最初のビューから、表示するタブバーコントローラーを決定できます。2つのタブバーコントローラーを同じタブ/ビューコントローラー(それらの間で繰り返されるもの)にリンクさせることもできます。

最初のViewControllerで、実行するセグエと出来上がりを知るためのコードを追加します。

このようなもの: ここに画像の説明を入力してください

私はこれに対するコードソリューションを検討しています(興味深いようです!)。何か見つけたら更新します。

編集:これがコード化されたソリューションです。(私はストーリーボードを使用していますが、nibファイルで動作するようにコードを翻訳できると確信しています)。

最初に行うことは、ストーリーボードのインスタンスを作成することです。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];

次に、タブバーコントローラーをインスタンス化します。

UITabBarController *myTab = [storyboard instantiateViewControllerWithIdentifier:@"tabBar"];

次に、タブバーに追加する新しいViewControllerをインスタンス化します。

UIViewController *newVC = [storyboard instantiateViewControllerWithIdentifier:@"newView"];

これは興味深い部分です。すべてのビューコントローラ/タブを配列に配置してから、その配列にビューを追加または削除します。次に、tabbarcontrollerのビューコントローラーを変更された配列に設定します(1つのviewControllerを追加し、別のviewControllerを削除します)。

NSMutableArray* controllers = [myTab.viewControllers mutableCopy];
[controllers insertObject:newVC atIndex:0];
[controllers removeObjectAtIndex:2];
[myTab setViewControllers:controllers];

次に、次のようにタブバーコントローラーを押すだけです。

[self.navigationController pushViewController:myTab animated:YES];

ここではストーリーボードとARCを使用しています。ARCを使用していない場合は、ペン先用に変更してアレイを解放できます。書くのが楽しかったです!それが役に立てば幸い!乾杯!

于 2012-06-15T17:59:33.283 に答える