1

カスタマイズが許可された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;
}

pragma mark - pragma mark 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 レシピを読んでいました。しかし、これに関連するものは見つかりませんでした。

4

1 に答える 1

0

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;


}
于 2012-02-25T19:22:15.040 に答える