私は自分の答えを完全に作り直し、サンプル プロジェクトを作成して、2 回目は何も見逃さないようにしました。
TBViewController のストーリーボード サブクラスで、すべてのビュー コントローラー (識別子付き) を作成できるはずです。これを行うには、UIViewController をクリックし、ID インスペクター (cmd alt 3) に移動してから、「TBViewController」と入力します。すべてが正しく機能していれば、オートコンプリートする必要があります。次のステップは、タブ コントローラーのタブを作成することです。TBTabBar コントローラーに追加する前に、各タブに 3 つの値が必要です。
- 通常の画像
- ハイライトされた画像
- ボタンに関連付けられたビュー コントローラー
以下は、パラメータとして 3 つの要件すべてを受け入れるこれらの TBTabButton オブジェクトをインスタンス化するために作成したカスタム メソッドです。
-(TBTabButton*)TBTabButtonWithStoryBoardID:(NSString*)identifier andButtonImageNamed:(NSString*)normalImageTitle andHighlightedImageNamed:(NSString*)highlightImageTitle{
//Create the tab bar and assign normal image
TBTabButton *tabBarButtonItem = [[TBTabButton alloc] initWithIcon:[UIImage imageNamed:normalImageTitle]];
//Assign Highlighted image
tabBarButtonItem.highlightedIcon = [UIImage imageNamed:highlightImageTitle];
//Fetch the subclassed view controller from storyboard and assign as viewController
tabBarButtonItem.viewController = [self TBViewControllerFromStoryboardWithIdentifier:identifier];
return tabBarButtonItem;
}
ビュー コントローラーは、次のコード ブロックのメソッドを使用して、ストーリーボードから取得できます。
-(TBViewController*)TBViewControllerFromStoryboardWithIdentifier:(NSString*)identifier{
//instantiateViewControllerWithIdentifier returns a UIViewController Object
UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:identifier];
//check if UIViewController is a subclassed TBViewController
if([viewController isKindOfClass:[TBViewController class]]){
//if it is then send it back as the correct type
return (TBViewController*)viewController;
}
return nil;
}
これで、「すぐに追加できる」TBTabButton オブジェクトを作成するメソッドができました。このメソッドを使用して、タブ バーに必要な各ボタンを作成します。これらをインスタンス化したら、それらを NSArray に追加して、TBTabBar オブジェクトを作成するためのパラメーターとして渡すことができるようにする必要があります。あとは、UITabBar オブジェクトをビューに追加し、デフォルトに基づいて表示するように設定するだけです。
-(void)setTBTabBar{
//Instantiate your tab TBTabButtons
TBTabButton *tab1 = [self TBTabButtonWithStoryBoardID:@"tab1"
andButtonImageNamed:@"favoritesIcon.png"
andHighlightedImageNamed:@"favoritesIconHighlighted.png"];
TBTabButton *tab2 = [self TBTabButtonWithStoryBoardID:@"tab2"
andButtonImageNamed:@"mentionsIcon.png"
andHighlightedImageNamed:@"mentionsIconHighlighted.png"];
TBTabButton *tab3 = [self TBTabButtonWithStoryBoardID:@"tab3"
andButtonImageNamed:@"messagesIcon.png"
andHighlightedImageNamed:@"messagesIconHighlighted.png"];
//Add them to an array
NSArray *arrayOfTBViewControllers = [NSArray arrayWithObjects: tab1, tab2, tab3, nil];
//Instantiate your TBTabBar object with your array of TabButtons. Set this view as delegate
tabBar = [[TBTabBar alloc] initWithItems:arrayOfTBViewControllers];
tabBar.delegate = self;
//Add it to the view and set it to show defaults
[self.view addSubview:tabBar];
[tabBar showDefaults];
}
このメソッドは、-(void)viewDidLoad メソッドで呼び出す必要があります。
他に行う必要があるのは、次のとおりです。
- _prefix.pch ファイルで SELECTED_VIEW_CONTROLLER_TAG 98456345 を定義します
- コンパイル済みソースの下に「-fno-objc-arc」フラグを追加して、インポートされたファイルの ARC をオフにします。
うまくいけば、これはあなたが抱えていた問題に対処します。これは、少し混乱するかもしれない1つのことのようでした. README の他の手順を正しく実行している限り、これはうまく機能するはずです。
それでもうまくいかない場合はお知らせください。上記のコード用に作成した実際の例へのリンクを投稿できます。