gpt4 book ai didi

iphone - 在 Controller 之间传递数据的 "delegates"的替代方案是什么?

转载 作者:行者123 更新时间:2023-12-01 17:13:16 24 4
gpt4 key购买 nike

是否有“委托(delegate)”的替代方法将数据从一个 Controller 传回另一个 Controller ?

只是为了将子 Controller 的结果传回给父 Controller ,实现委托(delegate)似乎需要做很多工作。没有别的方法吗? “ block ”是一个答案,如果是这样,一些示例代码会很棒。

最佳答案

委托(delegate)不是很多工作,也不是很多代码,通常是最合适的解决方案。在我看来,它们既不困难也不困惑。

五行代码在 child 的界面中。 @interface 之前:

@protocol MyUsefulDelegate <NSObject>
- (void)infoReturned:(id)objectReturned;
@end

内部@interface:
id <MyUsefulDelegate> muDelegate;

在@inteface 的@end 之后:
@property (assign) id <MyUsefulDelegate> muDelegate;

一行代码在 child 的实现中:
[[self muDelegate] infoReturned:yourReturnObject];

对现有代码行的一个补充 在父界面中:
@interface YourParentViewController : UIViewController <MyUsefulDelegate>

三行代码在父级的实现中。在你调用 child 之前的某个地方:
[childVC setMuDelegate:self];

实现中的任何地方:
- (void)infoReturned:(id)objectReturned {
// Do something with the returned value here
}

总共九行代码,其中一行只是对现有代码行的补充,另一行是右花括号。

比方说,它不像从本地方法返回值那么简单,但是一旦你习惯了这种模式,它就会 super 简单,而且它有能力让你做各种更复杂的事情。

关于iphone - 在 Controller 之间传递数据的 "delegates"的替代方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5532486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com