Цель C: Как отключить взаимодействие с пользователем для всех панелей вкладок, кроме одной? - PullRequest
4 голосов
/ 12 августа 2011

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

Ответы [ 3 ]

15 голосов
/ 12 августа 2011

Я не пробовал, но согласно документам , вы можете вернуть NO от делегата tabBarController:shouldSelectViewController:.

[ОБНОВЛЕНИЕ] Я просто попытался это из любопытства -кажется, работает нормально.Создайте новый проект из шаблона «Панель вкладок» и перейдите к -viewDidLoad вашего FirstViewController.Добавьте эту строку:

[self.tabBarController setDelegate:self];

, а затем реализуйте метод делегата:

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    if (userHasCompletedAction) {
        return YES;
    }
    return NO;
}

Не забудьте соответствовать <UITabBarControllerDelegate> в вашем файле .h!

Надеюсь, это поможет.

4 голосов
/ 12 августа 2011

Вы должны реализовать этот метод

- (void)tabBarController:(UITabBarController *)tabBarController1 didSelectViewController:(UIViewController *)viewController {

    if ([tabBarController1 selectedIndex]==0) { 
        UITabBarItem *tabBarItem = [[[[self tabBarController]tabBar]items] objectAtIndex:1];
        [tabBarItem setEnabled:FALSE];

    } 
}

Вы должны сделать что-то подобное для отключения необходимых элементов панели вкладок.

0 голосов
/ 12 августа 2011

Метод tabBar:didSelectItem: в UITabBarDelegate может помочь.

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