1

ログインシステムを実装しています。

LoginViewControllerこのシステムのビューを処理します (当たり前!)。LoginSession現在のセッションの認証と保存を処理するシングルトンです。認証は RestKit を介して行われます。

//LoginViewController.m
- (IBAction)loginButtonPress:(id)sender {
    (...)
   [[LoginSession sharedInstance] authenticateUser:[username text] withPassword:[password text] andDomain:[domain text]];
}


//LoginSession.m
- (void) authenticateUser:(NSString *)userName withPassword:(NSString *)password andDomain:(NSString *)domain{
    (...)
     RKRequest * loginRequest = [[RKClient sharedClient] get:@"/login" queryParameters:loginData delegate:self];
    (...)
}

このリクエストが完了すると、デリゲートが呼び出されます。

//LoginSession.m
- (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response;

エラーを表示するか、ユーザーがアプリケーションにアクセスできるようにするために、LoginViewController を呼び出す必要があります。

LoginViewControllerStoryboard を使用して をインスタンス化しようとしましたが、新しいインスタンスを作成していたことがわかりました。

//LoginSession.m
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
    
LoginViewController *loginViewController =
(LoginViewController *)[mainStoryboard instantiateViewControllerWithIdentifier: @"loginViewController"];

LoginViewController's selfそして、プロパティに保存しようとしましたLoginSession:(エラーが発生します)

//LoginSession.m
@property (strong, retain) LoginViewController *loginViewController;

では、の現在アクティブなインスタンスに接続する適切な方法は何ViewControllerですか?

4

2 に答える 2

0

使用できます

  • デリゲートパターン、iOSのあらゆる場所で使用されています
  • NSNotificationCenterなどの通知パターン
于 2012-09-06T05:57:54.927 に答える
0
//LoginSession.h
@property (strong, retain) LoginViewController *loginViewController; 

@synthesize loginViewController;

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
loginViewController =
(LoginViewController *)[mainStoryboard instantiateViewControllerWithIdentifier: @"loginViewController"];

loginViewController をプッシュまたは提示する

loginViewController を使用してデリゲート メソッドを呼び出す

于 2012-09-06T07:04:55.000 に答える