gpt4 book ai didi

objective-c - Cocoa中不同ViewController之间的通信

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

我以为这个问题的答案可能很容易找到,但事实并非如此。它基本上是关于 MVC 的最佳实践,但我需要一个关于 Cocoa 的 MVC 实现的更具体的答案。

假设您有一个 MainView,它通过 Bindings 显示来自可变数组的数据,并且可以选择向该数组添加新项目。现在,添加到数组的数据可能更复杂,甚至可能需要验证才能将其添加到数组或创建数据类的对象。因此,我在我的项目中添加了一个新的 MVC 或者更具体的 VC 对,它是一个可以输入所有数据的 View 和一个保存数据的按钮。单击保存按钮上的操作将导致验证开始,如果验证成功,最终应将数据添加到数组中。

我想知道从 AddViewController 访问数组的最佳解决方案是什么。共享可变数组?在 AddViewController 中设置属性?

对于习惯 MVC 的人来说,答案可能非常简单。此外,我可以访问该数组,但我真的想知道哪种方法是最好的方法。

最佳答案

Delegate concept是您所有问题的答案!

数据验证成功后,将数据传递到 MainView Controller 以添加到数组中:)

详细信息:您的 AddViewController 应该有一个协议(protocol)和委托(delegate)属性

@protocol AddViewControllerDelegate <NSObject>

-(void)addViewController:(AddViewController*)addViewController didCompleteWith:(id)data;

@end

@interface AddViewController : SuperClass

@property (nonatomic,weak)id<AddViewControllerDelegate>delegate;
...

@end

您的主视图 Controller 应该实现此协议(protocol),并将其自身设置为 AddViewController 委托(delegate)。

验证数据后,AddViewController 应调用委托(delegate)上协议(protocol)定义的方法。

-(void)dataValid:(id)data {
...
[self.delegate addViewController:self didCompleteWith:data]
...
}

关于objective-c - Cocoa中不同ViewController之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19093369/

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