Как отключить кнопки UITabBarController в Master View Controller в iOS? - PullRequest
3 голосов
/ 28 июня 2010

Когда я загружаю данные с помощью кнопок UITabBarController, я получаю исключение.Как я могу решить эту проблему?

Как отключить кнопки до загрузки данных, чтобы избежать возникновения исключения?

Ответы [ 3 ]

9 голосов
/ 10 мая 2011

Вот код для включения / отключения всех элементов на панели вкладок.

+(void) setAllItemsInTabBar:(UITabBarController *)aTabBar toEnableState:(BOOL)enableState
{
    NSArray *tabItems = aTabBar.tabBar.items;
    for (UIBarItem *tabItem in tabItems) 
    {
        [tabItem setEnabled:enableState];
    }
}
6 голосов
/ 10 июля 2013

Другим способом решения этой проблемы было бы соответствие протоколу <UITabBarControllerDelegate>.

@interface SomeViewController : UIViewController <UITabBarControllerDelegate>
@property (nonatomic) BOOL tabbarShouldRespond;
//..
//..

затем

@implementation SomeViewController
//..
// become the delegate for our UITabBarController - probably in viewDidLoad
self.tabBarController.delegate = self;
//..
// set our BOOL for whether the tab bar should respond to touches based on program logic
self.tabbarShouldRespond = NO;
//..
//..
#pragma mark <UITabBarControllerDelegate>
//Asks the delegate whether the specified view controller should be made active.
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    if (self.tabbarShouldRespond) {
        return YES;
    } else {
        return NO;
    }
}

Apple Docs - UITabBarControllerDelegate Reference Reference

6 голосов
/ 28 июня 2010

Вы можете отключить и включить весь свой пользовательский интерфейс с помощью

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

[[UIApplication sharedApplication] endIgnoringInteractionEvents];

При этом я рекомендую покопаться и понять причину сбоя приложения, так как вы захотите решить проблему, а не скрывать ошибки.

Один быстрый выстрел: вы загружаете другой поток?Вы можете обновить пользовательский интерфейс только из основного потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...