@interface NewClass : NSObject <TheOtherDelegate>
- (void)doSomething { NSLog(@"The Delegate did something..."); }
我们可以在flipsideviewcontroller上有一个按钮,我们想要调用该委托方法,但是仍然对主视图控制器上的委托方法保持“完成”按钮调用,它会解散它吗?
话虽这么说,我把一个快速的项目放在一起,只是为了看看它是否会起作用,但事实并非如此.我遇到了一个“答案”,说你必须首先实例化你想成为代表的班级……
NewClass *myDelegate = [NewClass alloc] init] [fillInMethodHere setDelegate:myDelegate];
不知道为什么它得到了正确的答案检查,因为不用说它不起作用.有什么我想念的吗?我搜索了ib,看看是否有某个“委托”连接,但我找不到任何东西.
在旁注上,当我在我的工作项目中工作时,我读到了关于删除#import并添加@class的建议.再次,这打破了各种各样的事情.奇怪的是,在此之前,我到目前为止所做的工作和建设都很好.当我删除新的@class并且未注释#import时. xcode突然给了我一个错误“无法找到协议减速……”但是,它早了几秒钟才工作.我将不得不删除协议代码并重新添加它以使其再次工作.非常痴迷.
任何帮助,将不胜感激. iv在文档,谷歌,堆栈等中读取的所有内容都应该有效,而不是在实际项目中.
解决方法
[self.mydelegateA doSomething]; [self.mydelegateB doSomething];
等等
您还可以使用可以添加对象的NSMutableArray属性,然后使用[self.myMutableArrayOfDelegates makeObjectsPerformSelector:@selector(doSomething)].
最后,NSNotificationCenter的路径(不要与推送通知混淆)始终是一个提供对象间消息传递系统的类.许多对象可以注册任何其他对象可以发送的消息.
有关更多信息,请参阅Apple的文档. Click Here.
无论这是OS X文档的事实,它仍然非常善于直观地解释事物:click here.
这是一个简单地更改委托属性名称的示例:click here
这是添加另一个协议和第二个代理的示例:click here
最后,这是一个基于前两个的示例,并且具有符合相同协议的第三个委托:click here