IPhone開発は初めてです。ビューベースのアプリケーションを作成しています。ビューにタブバーを追加しました(タブバーコントローラーではありません)。タブバーアイテムのタグ値を1、2に設定することで、タブバーアイテムのクリックイベントで各タブバーのビューをロードしました。
タブバー1をデフォルトで選択したい。そのために何をすべきですか?
これが私のコードです:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
NSLog(@"didSelectItem: %d", item.tag);
[self activateTab:item.tag];
}
- (void)activateTab:(int)index {
switch (index) {
case 1:
self.tab1ViewController =[[tab1 alloc] initWithNibName:@"tab1" bundle:nil];
[self.view insertSubview:tab1ViewController.view belowSubview:tabbar1];
if (currentViewController != nil)
[currentViewController.view removeFromSuperview];
currentViewController = tab1ViewController;
break;
case 2:
self.tab2ViewController =[[tab2 alloc] initWithNibName:@"tab2" bundle:nil];
[self.view insertSubview:tab2ViewController.view belowSubview:tabbar1];
if (currentViewController != nil)
[currentViewController.view removeFromSuperview];
currentViewController = tab2ViewController;
break;
default:
break;
}
}
インターフェースビルダーにタブバーを追加しましたが、インターフェースビルダーで何かできますか?
[tabBar setSelectedItem:[tabBar.items objectAtIndex:item.tag]];
Swiftの場合、tabBarが@IBOutlet
の場合、viewDidLoadで使用します。
tabBar.selectedItem = tabBar.items?.first
ビューを表示するときはいつでも、メソッドを呼び出してタブを選択できませんか?そのようです:
[self activateTab:1];
選択するタブバー項目を変更するには、次のコマンドを使用します。
[myTabBar setSelectedItem:myTabBarItem];
MyTabBarItemは、関連するビューのUITabBarItemインスタンスです。
SelectedIndexプロパティを設定することにより、TabBarControllerのデフォルトのインデックスを設定できます。これは、viewDidLoadまたはコントローラーにプッシュする前に行うことができます。これは、TabBarだけではなく、TabBarControllerを使用している場合にのみ行われます。
tabBarController.selectedIndex = 1;
TabBarControllerなしでTabBarを使用している場合は、次のようにする必要があります。
self.tabBar.selectedItem = [self.tabBar.items objectAtIndex:1];
ITabBarがUITabBarControllerによってまだ処理されていない場合
[self.TabBar setSelectedItem:[[self.TabBar items] objectAtIndex:1]];
ここで、TabBarはUITabBarのアウトレットです。
ITabBarがすでにUITabBarControllerによって処理されている場合
[self.tabBarController setSelectedIndex:1];
以下はSwift 1.2で私にとって完璧に機能します
myTabBar.selectedItem = myTabBarItem
ここで、myTabBarおよびmyTabBarItemは、ストーリーボード上のそれぞれの要素へのIBOutletです。
スウィフト3:
@IBOutlet weak var uiTabBarOutlet: UITabBar!
uiTabBarOutlet.selectedItem = uiTabBarOutlet.items?[0]
UITabBarDelegate
を使用して作成した方法:
#import "InfoSecurity.h"
#import "TabsCell.h"
@interface InfoSecurity () <UITabBarDelegate>
@property (strong, nonatomic) IBOutlet UITabBar *mainTab;
@property(weak,nonatomic) NSArray *TabArray;
@end
@implementation InfoSecurity
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
if (_mainTab.selectedItem.tag == 1) {
NSLog(@"TAB 1");
}
else if (_mainTab.selectedItem.tag == 2) {
NSLog(@"TAB2");
}
else if (_mainTab.selectedItem.tag == 3)
{
NSLog(@"TAB3");
}
else
{
NSLog(@"TAB NOT WORKING");
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
インターフェイスビルダーでUITabBarのデリゲートをビューコントローラーのクラスに設定し、<UITabBarDelegate>
後に @interface
クラスの宣言。
次に、最初のタブを強調表示するように設定できます。
- (void)viewDidLoad {
[super viewDidLoad];
if (tabBar.items.count >= 1) {
[tabBar setSelectedItem:[tabBar.items objectAtIndex:0]];
}
}