我需要根据用户的决定进行几次验证(例如,如果批准的购买超出支出限额),并且在失败时拒绝“完成”操作。

但是,看起来不可能像其他语言(例如showmessage,alert()等)一样具有真正的模态 Action ,并且一切都是由委托(delegate)进行的。

但是后来我不知道该怎么办。如果用户按下“完成”按钮,程序将询问“您确定吗?”他说“取消”,流程继续进行, View 被推回!

如何在 cocoa 世界解决这个问题?

最佳答案

解决方案不是与之抗争,只需将您的逻辑分为两部分。如果用户单击“取消”,则不要执行第二部分。如果用户单击“确定/继续”,请执行第二部分。

由阻塞主线程引起的主要问题是主线程负责处理事件。处理事件的经典方法可能会引入奇怪的事件处理错误,因为您没有一个事件循环,而是在彼此之间嵌入了多个事件循环。

通过使用委托(delegate),您可以利用一个事件循环(通过UIApplicationMain调用),而不会出现任何这些事件处理异常。

10-02 09:27