iOS - просмотр входа в UITabBarControler - PullRequest
1 голос
/ 25 февраля 2012

У меня есть контроллер вкладок с 6-7 вкладками на нем с возможностью настройки (это означает, что пользователь может изменить порядок отображения панели вкладок).А вкладка 1,3,5,7 требует от пользователя входа в систему, прежде чем он увидит любое содержимое в представлении.

Я не знаю, как определить, какая вкладка требует входа в систему (мы можем создать @protocal или что-то в этом роде).И после того, как пользователь входит в систему успешно.Я не знаю, как выбрать последнюю вкладку, к которой обратился пользователь.

Я использовал appdelegate, указав UITabBarControllerDelegate в AppDelegate

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

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
BOOL hasValidLogin = [standardUserDefaults boolForKey:@"hasValidLogin"];


if (hasValidLogin == NO && /* I don't know to find a controller which requires login access*/) {
    [LoginView showModal:viewController delegate:self];
    return NO;
}
return YES;
}

знак прагмы - знак прагмы Методы LoginDelegate-

-(void)loginViewController:(LoginView *)loginViewController didLoginSuccess:NSString *)userName {
NSLog((@"%s [Line %d] "), __func__, __LINE__);
NSLog(@"userName = %@", userName);

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
[standardUserDefaults setBool:YES forKey:@"hasValidLogin"];
[standardUserDefaults synchronize];


[self.tabBarController setSelected:/* How do i find the last touched tabbar*/];
}

Любая хорошая практика, рецепты и фрагмент кодаВы можете направить меня ценится.

Я читал рецепты Мэтта для iOS.Но я не смог найти ничего, связанного с этим.

1 Ответ

0 голосов
/ 25 февраля 2012

Фокус на UITabBarDelegate didSelectItem .Следите за ранее выбранным элементом вкладки.Если пользователь не прошел проверку подлинности, откройте экран проверки подлинности и выберите ранее выбранный элемент вкладки.Вот пример.

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {


 switch ( item.tag ) {

    case ME_TAB_BAR_TAG:

        if ( [AppHelper checkAuthentication] ) {

            [self showMe:YES];

        } else if ( previousItem ) {

            [tabBar setSelectedItem:previousItem];

            return;

        }

        break;

    case ITEMS_TAB_BAR_TAG:

        [self showMe:NO];

        break;

    case CREATE_TAB_BAR_TAG:

        if ( [AppHelper checkAuthentication] ) {

            [self createNewItem];

        } else if ( previousItem ) {

            [tabBar setSelectedItem:previousItem];

            return;

        }

        break;

}

previousItem = item;


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