0

我有一个从 Storyboard segue 调用的登录视图控制器。当用户正确登录后,我需要关闭当前的 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 回答