Facebookのような左スライドメニュー用のカスタムコントロールSWRevealControllerを使用しています。ユーザーがサインインしておらず、サインインが必要なオプションを選択した場合は、サインインするようにユーザーに依頼する必要があります。
クリックすると認証View Controllerが表示され、ユーザーがサインインします。成功すると、サインインする前に選択した行に従ってView Controllerをプッシュすることになっています。
私は使っている:
[self tableView:self.menuTable didSelectRowAtIndexPath:self.indexPath];
ただし、その行にView Controllerをプッシュしません。
ユーザーがサインインに成功したかどうかに関係なく応答を取得するデリゲート メソッドを実装しました。成功を受け取りました。
これが私のtableView
デリゲートメソッドです:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
SWRevealViewController *revealController = [self revealViewController];
UIViewController *frontViewController = revealController.frontViewController;
UINavigationController *frontNavigationController =nil;
self.indexPath = indexPath;
if ( [frontViewController isKindOfClass:[UINavigationController class]] )
frontNavigationController = (id)frontViewController;
NSInteger row = indexPath.row;
if(self.currentUser == nil){
SignInViewController *frontViewController = [[SignInViewController alloc] init];
frontViewController.delegate = self;
frontViewController.title = @"Cashmails";
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:frontViewController];
self.navController = navigationController;
[revealController pushFrontViewController:navigationController animated:YES];
}else{
CashmailViewController *frontViewController = [[CashmailViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:frontViewController];
[revealController pushFrontViewController:navigationController animated:YES];
}
}
サインインを成功させるために使用しているデリゲート メソッドを次に示します。
-(void) userSignInSuccessfully{
[self tableView:self.menuTable didSelectRowAtIndexPath:self.indexPath];
}
私もこれを試しました:
-(void) userSignInSuccessfully{
SWRevealViewController *revealController = [self revealViewController];
[revealController pushFrontViewController:self.navController animated:NO];
}
間違ったアプローチを使用している場合、どうすればこれを達成できますか。