この質問に従って、ログイン シーケンスのデリゲートをセットアップしようとしています。
私のアプリケーションには、メイン ビュー (MESHomeViewController) があります。次のようなログイン構造もあります。
- MESLoginNavController
- MESWelcomeViewControllerのルートView Controllerで
- スタックにプッシュできる MESLoginViewController と MESSignupViewControllers もあります。
私の目的は、ユーザーがログインしたときにのみ呼び出されるデリゲート メソッドを用意することです。ビューはさまざまな機会にリロード/表示されることが多いため、viewDidLoad を使用できないため、デリゲートを使用しています。ユーザーがいつ完了したかを確認する必要があります。ログインする。
ユーザーは、Welcome コントローラー (Facebook 経由) または login コントローラー (通常の方法経由) および Signup (signup ;) 経由でログインできます。
これは私が以下に実装しようとしたものです: MESHomeViewController.h
#import "MESWelcomeViewController.h"
@interface MESHomeViewController : UIViewController <LoginViewControllerDelegate>
@end
MESHomeViewController.mで、ユーザーがログインしているかどうかを確認します。次の手順が完了していない場合:
NSLog(@"not logged in");
MESWelcomeViewController *loginNavVC = [self.storyboard instantiateViewControllerWithIdentifier:@"WelcomeVC"];
loginNavVC.delegate = self;
[self presentModalViewController:loginNavVC animated:NO];
MESWelcomeViewController.hには、次のものがあります。
@protocol LoginViewControllerDelegate;
@interface MESWelcomeViewController : UIViewController <NSURLConnectionDataDelegate>
@property (nonatomic, weak) id<LoginViewControllerDelegate> delegate;
@end
@protocol LoginViewControllerDelegate <NSObject>
- (void)didLoginUser;
@end
カスタムメソッドを介してユーザーが完全にログインしたら。ユーザーがログインすると、MESWelcomeViewController.m
NSLog(@"%@",self.delegate);
if ([self.delegate respondsToSelector:@selector(didLoginUser)]) {
[self.delegate didLoginUser];
}
ただし、デリゲート メソッドは呼び出されていません。welcomeViewController の self.delegate が Null のようです。上記のセットアップに基づいて、デリゲートをログイン ナビ コントローラーとして設定する必要があると考えていますが、現在ナビにプッシュされているビュー コントローラーからデリゲート メソッドを呼び出す方法がわかりません。