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