我正在尝试在 iPhone 上复制邮件应用程序的设计。在工具栏上,标签更新/更改以显示正在发送的邮件的状态。
复制它的最佳方法是什么?以下是我的想法,也许有人可以提出为什么其中一个会起作用或一个新想法。
为了统一起见,假设我有以下观点A -> B -> C - D
:A
, B
, 和C
被推上和推下 UINavigationController 并有问题的工具栏。D
是“撰写”窗口,是C
. 让我们称我要创建的对象是obj
.
代表
这需要我创建一个obj
inA
并将其传递给B
, 和C
. C
将调用诸如sendMail
on之类的方法obj
并尝试发送电子邮件。'obj' 将有一个委托方法obj:hasUpdateForToolbar:
,该方法将向委托类 ( C
) 发送一个数组以更新工具栏。通过发送过程,它将发送多条消息以更新进度条,并在最后说它已成功发送或最后一次电子邮件检查发生的日期。
此解决方案的问题是它不更新A
或B
. 当C
被弹出时,需要将委托重新分配给它,B
并且(我认为)在下一个值被推送之前,工具栏中的旧值会闪现obj
。
通知
这将比委托更干净,因为您不必将对象传递给每个类,这意味着类之间的依赖性更少)。但是由于您没有连接,因此您必须C
发布一条通知,说明有一封新邮件可以发送。obj
必须接收该通知,然后发布新通知而不是委托方法。
这样做的问题是,在未显示视图时取消订阅通知是一种常见的做法。所以我认为订阅通知时会有相同的闪光,B
并等待它被推送到工具栏的下一次更新。
KVC
我真的不确定如何设置它以便键值编码处理它。我是否能够设置一个视图obj
,将其放入每个视图的工具栏中,并且随着它的更新(带有标签或进度条)它会反映在每个工具栏中?
那么哪个是最好的/我在这些方面缺少什么?