4

2 つのビュー コントローラー (FirstViewController と SecondViewController) とタブ バー コントローラーがあり、ストーリーボードを使用しています。FirstViewController では、ユーザーはイメージビューをドラッグ アンド ドロップできます。したがって、ユーザーが SecondViewController を表示する 2 番目の TabBarItem をクリックするたびに、TabBarItem をクリックするたびに、ユーザーが画像をドロップしたかどうかを確認したいと思います。

UITabBarDelegateだから私はこれがとその方法でできることを理解しています-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item。しかし、メソッドが呼び出されていないため、何か間違ったことをしています。これは、デリゲートを適切に設定できないためだと思います。したがって、SecondViewController を TabBarController のデリゲートにする必要があります。

だから私の中で私SecondViewController.hは次のものを持っています

@interface SecondViewController : UIViewController<UITabBarDelegate>

そして、SecondViewController.m私は持っています

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
NSLog(@"%@", item);

}

- (void)viewDidLoad
{
[super viewDidLoad];
self.tabBarController.delegate = self;
}

しかし、何も起こらず、デリゲートを設定すると、コンパイラの警告も表示されます: Assigning to 'id' from incompatible type 'SecondViewController *const __strong'

これは私の最初のアプリであり、デリゲートを使用するのは初めてです。

4

6 に答える 6

3
 -(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;

このメソッドは、UITabBarController ではなく、UITabBar のデリゲート メソッドであるため、

 self.tabBarController.delegate = self;

動作しないでしょう。

タブ バー コントローラーには独自の UITabBar がありますが、タブ バー コントローラーによって管理されるタブ バーのデリゲートを変更することは許可されていないため、次のように UITabBarControllerDelegate メソッドを試してください。

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
NSLog(@"%@", item);

}

詳細については、情報を確認してください

ありがとう

于 2013-06-14T04:21:39.883 に答える
2

以下をインポートして実装しました。それが役に立てば幸い。

- (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");
    }

}
于 2015-07-29T09:41:58.553 に答える
1

間違ったデリゲート プロトコルを使用しています。通常、オブジェクトUITabBarDelegateのカスタマイズに使用されます。タブが選択されているかどうかを確認したり、タブの動作をカスタマイズしたりするには、プロトコルUITabBarを使用する必要があります。UITabBarControllerDelegate

于 2013-06-13T21:31:07.873 に答える
0

代わりに UITabBarControllerDelegate プロトコルを実装し、このデリゲート コールバックを使用して選択を追跡する必要があります。

tabBarController:didSelectViewController:

次に、デリゲートを呼び出す前にデリゲートを初期化する必要があります。ViewDidLoad は、tabbarcontroller がデリゲートと通信しようとした後に呼び出されます。

于 2013-06-13T21:10:53.453 に答える