我有一个从Storyboard segue调用的登录视图控制器;当用户正确登录时,我需要关闭当前的ViewController,返回调用者ViewController并隐藏登录按钮。
如何引用发件人ViewController来隐藏按钮?我是否必须将“root”ViewController的实例传递给登录,还是有另一种方式?
答案 0 :(得分:1)
你应该使用委托。用另一个代表的按钮创建VC。登录成功后,您将关闭VC并调用委托方法来隐藏按钮。
答案 1 :(得分: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