IOS 5 MBProgressHUD деактивира бутоните на лентата с раздели, докато зарежда данни. (userInteractionEnabled = НЕ)

Използвам MBProgressHUD при зареждане на данни и потребителят може да натисне бутона за друг раздел по време на процеса. MBProgressHUD деактивирайте само изгледа на съдържанието. Проверих други публикации, но не видях нищо, което да ми помага да деактивирам бутона за раздели.

Опитах се да задам tabbaritem.userInteractionEnabled на NO, но не можах да намеря начин за достъп до това. Мога да го направя в сценария, но не мога да го превключа обратно към YES.

Въпросът ми е; от моя viewController има ли някакъв начин за достъп до tabbarcontroller.tabbaritem.userInteractionEnabled?


person xcodii    schedule 10.08.2012    source източник
comment
За хора, които търсят подобен въпрос; Използвайте делегат на табулатора -(BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController връща НЕ, когато приложението е заето.   -  person xcodii    schedule 10.08.2012


Отговори (2)


Използвам категория:

UIViewController+MBProgressHUD.h

#import <UIKit/UIKit.h>

@class MBProgressHUD;

@interface UIViewController (MBProgressHUD)

- (MBProgressHUD *)showHUD;
- (MBProgressHUD *)showHUDFromTitle:(NSString *)title;
- (MBProgressHUD *)showHUDFromTitle:(NSString *)title completedImage:(BOOL)completedImage;
- (void)hideHUD;

@end

И UIViewController+MBProgressHUD.m

#import "UIViewController+MBProgressHUD.h"
#import <MBProgressHUD/MBProgressHUD.h>

@implementation UIViewController (MBProgressHUD)

- (MBProgressHUD *)showHUDFromTitle:(NSString *)title {
    UIView *view;
    if (self.tabBarController.view != nil) {
        view = self.tabBarController.view;
    } else if (self.navigationController.view != nil) {
        view = self.navigationController.view;
    } else {
        view = self.view;
    }
    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:NO];
    hud.labelText = title;
    return hud;
}

- (MBProgressHUD *)showHUD {
    return [self showHUDFromTitle:NSLocalizedString(@"Loading", @"Loading")];
}

- (MBProgressHUD *)showHUDFromTitle:(NSString *)title completedImage:(BOOL)completedImage {
    MBProgressHUD *hud = [self showHUDFromTitle:title];
    if (completedImage) {
        UIImage *checkmarkImage = [UIImage imageNamed:@"37x-Checkmark"];
        UIImageView *checkmarkImageView = [[UIImageView alloc] initWithImage:checkmarkImage];
        hud.customView = checkmarkImageView;
        hud.mode = MBProgressHUDModeCustomView;
    } else {
        hud.mode = MBProgressHUDModeText;
    }
    return hud;
}

- (void)hideHUD {
    [MBProgressHUD hideAllHUDsForView:self.tabBarController.view animated:NO];
    [MBProgressHUD hideAllHUDsForView:self.navigationController.view animated:NO];
    [MBProgressHUD hideAllHUDsForView:self.view animated:NO];
}

Пример:

[self showHUD];
[self hideHUD];
person nab0y4enko    schedule 14.05.2014

Това е лесен начин

 [[[self tabBarController] tabBar] setUserInteractionEnabled:NO];

Както е посочено в тази връзка: Как мога да направя действието на табулатора скрито, когато изгледът се зарежда?

Работи чудесно с MBProgressHUD

person chinjazz    schedule 29.06.2013