0

メソッドを呼び出すなど、別のビューコントローラーにセグエするのではなく、別の機能を実行する UITabBarButton を持つ方法を知っている人はいますか?

私の iPad アプリはタブ バーを利用していますが、クライアントは一番右のボタンでサーバーの更新をチェックしたいと考えています。ただし、ボタンを押してもビューが切り替わらないようにする方法がわかりません。セグエを削除しようとしましたが、ボタンも削除されます。

-編集- わかりやすくするためにスクリーンショットとコード スニペットを追加しました。ラベルの付いたタブSyncは、viewController を開きたくないタブです。

ここに画像の説明を入力

AppDelegate.h:

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UIViewController *viewController;

@end

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self.window makeKeyAndVisible];       
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    tabBarController.delegate = (id)self;

   [[NSNotificationCenter defaultCenter] addObserver:self  selector:@selector(applicationDidTimeout:) name:kApplicationDidTimeoutNotification object:nil];

    return YES;
}

と:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

    NSLog(@"vc = %@", viewController);
    return YES;
}
4

1 に答える 1

1

UITabBarControllerDelegateメソッドを見てください:

– tabBarController:shouldSelectViewController:

selectViewController== 最後のタブバーの場合return NO、他のアクションを実行します

編集 :

私が作った例を見てください:

AppDelegate.h

@interface ISAppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.


    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    tabBarController.delegate = (id)self;

    return YES;
}

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {

    // here check if "viewController" is your last tab controller, then return NO and perform some actions you need
    if (viewController = self.lastTabController) {
        // do some actions
        return NO;
    }

    return YES;
}
于 2013-02-07T14:20:25.443 に答える