Ios 为什么委托的方法可以';别叫了 文件:PeopleLinkEditViewController.h 文件:PeopleLinkHeaderView.h

Ios 为什么委托的方法可以';别叫了 文件:PeopleLinkEditViewController.h 文件:PeopleLinkHeaderView.h,ios,delegates,uistoryboard,Ios,Delegates,Uistoryboard,无法调用委托的方法。当我调试它时,我发现editcontroller中的委托为零。editcontroller由情节提要创建。Headerview是编辑控制器的子视图 问题在于,您将操作发送到的实例与您为其声明委托的实例不相同 看这个我就知道了 edit = [[PeopleLinkEditViewController alloc] init]; edit.delegate = self; 这是一个新创建的实例,您不会以任何方式显示或呈现它。也许这是故事板上制作的另一个视图控制器?如果它是您在

无法调用委托的方法。当我调试它时,我发现editcontroller中的委托为零。editcontroller由情节提要创建。Headerview是编辑控制器的子视图

问题在于,您将操作发送到的实例与您为其声明委托的实例不相同

看这个我就知道了

edit = [[PeopleLinkEditViewController alloc] init];
edit.delegate = self;
这是一个新创建的实例,您不会以任何方式显示或呈现它。也许这是故事板上制作的另一个视图控制器?如果它是您在故事板中指定的一个,您应该检索它并分配它的委托

ViewController *tmp = [[self storyboard] instantiateViewControllerWithIdentifier:@"ViewControllerIdentifier"];
tmp.delegate = self;
使用此选项检索正确的实例

#import ViewController.h
然后在要设置代理的位置

ViewController *tmp = [[self storyboard] instantiateViewControllerWithIdentifier:@"ViewControllerIdentifier"];
tmp.delegate = self;
不要忘记更改以包含类的标题,并更改为正确的标记

从此处检索:


问题在于,您要向其发送操作的实例与您为其声明委托的实例不相同

看这个我就知道了

edit = [[PeopleLinkEditViewController alloc] init];
edit.delegate = self;
这是一个新创建的实例,您不会以任何方式显示或呈现它。也许这是故事板上制作的另一个视图控制器?如果它是您在故事板中指定的一个,您应该检索它并分配它的委托

ViewController *tmp = [[self storyboard] instantiateViewControllerWithIdentifier:@"ViewControllerIdentifier"];
tmp.delegate = self;
使用此选项检索正确的实例

#import ViewController.h
然后在要设置代理的位置

ViewController *tmp = [[self storyboard] instantiateViewControllerWithIdentifier:@"ViewControllerIdentifier"];
tmp.delegate = self;
不要忘记更改以包含类的标题,并更改为正确的标记

从此处检索:


调试时检查“委托”是否已初始化并已分配内存?如果(delegate!=nil&[delegate respondsToSelector:@selector(headerinfoeditfish)],您可以插入条件。是的,我检查delegate是否为nil。但是为什么呢?如何修复?调试时检查,是否初始化“委托”并为其分配内存?如果(delegate!=nil&[delegate respondsToSelector:@selector(headerinfoeditfish)],您可以插入条件。是的,我检查delegate是否为nil。但是为什么呢?如何修复它?是的,此viewcontroller由情节提要控制。这意味着我应该使用storyboard标记来检索它?UIStoryboard*sb=[UIStoryboard storyboard with name:@“MainStoryboard”bundle:nil];PeopleLinkEditViewController*edit=[sb实例化的ViewController标识符:@“PeopleLinkEditController”];edit.delegate=self;使用此代码无法解决此问题。那么你有什么建议吗,谢谢你可以用edit中的代码用你所有的标签来实例化故事板我不知道怎么做。要提供更多信息吗?您知道吗,在故事板上,无论您在哪里设置具有委托属性的viewcontroller,都可以将控件拖动到您希望它成为委托的任何viewcontroller。(查找指定的属性的最后一个选项卡,其中应该有“委托”,以便您可以将其链接到那里。只需将点拖动到另一个viewcontroller)也可以。是的,此viewcontroller由情节提要覆盖。这意味着我应该使用storyboard标记来检索它?UIStoryboard*sb=[UIStoryboard storyboard with name:@“MainStoryboard”bundle:nil];PeopleLinkEditViewController*edit=[sb实例化的ViewController标识符:@“PeopleLinkEditController”];edit.delegate=self;使用此代码无法解决此问题。那么你有什么建议吗,谢谢你可以用edit中的代码用你所有的标签来实例化故事板我不知道怎么做。要提供更多信息吗?您知道吗,在故事板上,无论您在哪里设置具有委托属性的viewcontroller,都可以将控件拖动到您希望它成为委托的任何viewcontroller。(查找属性的最后一个指定选项卡,其中应该有“委托”,以便您可以将其链接到那里。只需将点拖动到另一个viewcontroller)也可以