0

ストーリーボードセグエから呼び出されたログインビューコントローラーがあります。ユーザーが正しくログインしたら、現在のViewControllerを閉じ、呼び出し元のViewControllerに戻り、ログインボタンを非表示にする必要があります。

ボタンを非表示にするために、送信者のViewControllerを参照するにはどうすればよいですか?rootViewControllerのインスタンスをログインに渡す必要がありますか、それとも別の方法がありますか?

4

2 に答える 2

1

委任を使用する必要があります。ボタンのある VC を相手のデリゲートにします。ログインが成功したら、VC を終了し、デリゲート メソッドを呼び出してボタンを非表示にします。

于 2012-12-31T15:26:02.763 に答える
1

委任を使用します。

DetaliViewControler の場合、次のようなプロトコルを作成します

@protocol DetailViewControllerDelegate <NSObject>
-(void)successFullyLoggedInOnController:(DetailViewController *) controller;
@end

次のように、デリゲート宣言を DetailViewController のインターフェイスに追加します

@property (weak) id<DetailViewControllerDelegate> delegate;

MasterViewController をプロトコルに準拠させます。

-(void)successFullyLoggedInOnController:(DetailViewController *) controller
{
    [self.loginButton setHidden:YES];
}

MasterViewController が DetailViewController を表示する直前に、次のようにします。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"DetailViewSegue"]) {
        DetailViewController *vc = segue.destinationViewController;
        vc.delegate = self;
    }
}

DetailViewController で、入力および検証された資格情報が呼び出されると、

[self.delegate successFullyLoggedInOnController:self];

DetailViewController を閉じる

于 2012-12-31T15:26:55.787 に答える