gpt4 book ai didi

cocoa - 在 Cocoa 中操作 UI 元素的最佳实践

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

首先我要说的是,我是 cocoa 开发的新手。我也很惊讶我还没有找到关于此的帖子,但我现在已经过滤了许多帖子但没有成功。

我有一组元素,它们应该根据长时间运行的算法的状态更改状态。

基本上,我有一个开始按钮、一个取消按钮和一个下一步按钮。应用程序的初始状态将是“开始”按钮启用、“取消”和“下一步”按钮禁用。随着算法的进展,算法的状态应在所有按钮上交换启用/禁用状态。

我见过的每个操作按钮状态的选项都涉及将button.enabled编码到 Controller 代码中。当我深入研究 Cocoa 时,我有 ASP .NET MVC 背景,这对我来说似乎是一种倒退。 MVC 模式中 View 逻辑和 Controller 逻辑不应该分离吗?

对我来说,似乎我应该能够发出几个 bool 值作为 IBOutlet,例如算法运行和算法成功,并在 View 层绑定(bind)按钮状态。我需要放弃这个想法吗?或者我可能遗漏了一些关于 Cocoa 版本的设计模式的信息(比如我将 View 绑定(bind)到的对象实际上应该是一个 View 模型,它与 Controller 类交互)?或者,最后,有没有一种简单的方法来完成我正在谈论的事情,而我只是错过了它。

最佳答案

您不需要将按钮的启用状态编码到 Controller 中。您可以做的是在 Controller 上声明一个 BOOL 属性,例如 isBusy,然后在开始长时间操作时将此属性设置为 YES 并完成后为NO。您必须使用 Key-Value Coding 来执行此操作- 兼容方法,这本质上意味着使用 setter,因此您可以调用 self.isBusy = YES;,例如。

您这样做的原因是因为您可以使用 Cocoa Bindings在 UI 控件上设置绑定(bind)。进入其中一个按钮的绑定(bind)检查器,并使用 isBusy 键路径将 Enabled 绑定(bind)绑定(bind)到您的 Controller 对象。

Cocoa 绑定(bind)使用 Key-Value Observing (KVO)来监控观察到的属性的值。当 isBusy 属性发生更改时,绑定(bind)到该属性的按钮将注意到并更改其 enabled 状态作为响应。

关于cocoa - 在 Cocoa 中操作 UI 元素的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103978/

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