Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何从被调用的ViewController修改sender ViewController?_Objective C_Ios_Cocoa Touch_Uiviewcontroller - Fatal编程技术网

Objective c 如何从被调用的ViewController修改sender ViewController?

Objective c 如何从被调用的ViewController修改sender ViewController?,objective-c,ios,cocoa-touch,uiviewcontroller,Objective C,Ios,Cocoa Touch,Uiviewcontroller,我有一个从故事板序列调用的登录视图控制器。当用户正确登录时,我需要关闭当前ViewController,返回调用者ViewController并隐藏登录按钮 如何引用sender ViewController来隐藏按钮?我是否必须将root视图控制器的实例传递给登录名,还是有其他方法?您应该使用委派。用按钮使VC成为另一个的代理。登录成功后,您将退出VC并调用委托方法隐藏按钮 使用委托 为您的DeAliviewController创建一个协议,如 @protocol DetailViewCont

我有一个从故事板序列调用的登录视图控制器。当用户正确登录时,我需要关闭当前ViewController,返回调用者ViewController并隐藏登录按钮


如何引用sender ViewController来隐藏按钮?我是否必须将
root
视图控制器的实例传递给登录名,还是有其他方法?

您应该使用委派。用按钮使VC成为另一个的代理。登录成功后,您将退出VC并调用委托方法隐藏按钮

使用委托

为您的DeAliviewController创建一个协议,如

@protocol DetailViewControllerDelegate <NSObject>
-(void)successFullyLoggedInOnController:(DetailViewController *) controller;
@end
现在,在MasterViewController显示DetailViewController之前,doe类似于

- (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

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