将代理更改为查看的任何屏幕

Posted

技术标签:

【中文标题】将代理更改为查看的任何屏幕【英文标题】:Changing the delegate to whichever screen is viewed 【发布时间】:2012-12-18 14:58:42 【问题描述】:

我在其他帖子中读到,在 ios 中拥有多个委托不是正确的做事方式(甚至可能不可能?),相反,您应该使用诸如 NSNotifications 之类的东西来提醒其他(多个)视图事件的控制器。

在应用程序的整个运行期间保持对象的委托相同是更好的做法,还是在任何给定时间将委托更改为任何模式的 VC 是否有用。

这是一个例子: 我有一些模拟器类在后台运行并生成随机数,应用程序中的几个不同视图控制器将使用这些随机数。由于一次只能查看一个 VC,我可以将活动 VC 设置为模拟器的委托,并在每次 UI 更改时切换委托。

...或者我可以像现在一样使用通知,并让 VC 在加载时注册通知。

谢谢

【问题讨论】:

【参考方案1】:

实际上,委托是代表其他对象执行某些工作的对象。您似乎遇到的情况是各种对象是数据提供者的客户。您所描述的后台任务负责完成视图控制器只是帮助完成的事情是没有意义的。

为了使实现适合结构,我建议将背景对象分配为视图控制器的“数据提供者”属性或保留通知...取决于您喜欢的耦合程度以及您的类已启动数据传输。

【讨论】:

以上是关于将代理更改为查看的任何屏幕的主要内容,如果未能解决你的问题,请参考以下文章

将 UINavigationItem 颜色更改为黑色

在 Woocommerce 中单击后将添加到购物车按钮更改为查看购物车按钮

如何使用 XElement.Parse 解析 XML 而无需查看/将实体更改为字符?

查看dll文件中的代码

如何将按钮的位置更改为窗口内所需的位置?

Cocoa 基于文档的应用程序:对于仅查看器的文件类型,将“保存”更改为“另存为”