objective-c - 为什么我觉得 Interface Builder 挡住了我的路?

标签 objective-c cocoa macos interface-builder

我是 Cocoa for MacOSX 的新手,但我情不自禁地觉得自己一直在与 Interface Builder 作斗争。

我目前的情况是,我正在构建一个将具有多个自定义控件和 View 的应用程序。我开始在 Interface Builder 中构建应用程序,因为它最初非常容易拖动东西并将它们放入具有正确颜色和正确自动调整大小规则的正确位置。然而,是时候开始构建我的自定义控件和 View 了——如果不完成构建 IBPlugin 的工作,我无法在 Interface Builder 中很好地表示它们!我知道的唯一其他选择是拥有一个 Interface Builder 文档,其中包含一堆“自定义 View ”,只是它们的类发生了变化。突然间,甚至为 IB 烦恼似乎毫无意义——特别是考虑到这些控件和 View 将具有需要设置的属性(例如颜色)——就像 IB 文档中已有的其他 View 和控件一样。所以现在我在两个不相连的地方设置了可视化属性,这似乎抵消了 IB 的潜在优势之一,这使得调整应用程序的 UI 变得相对容易,而无需深入研究代码。

我还遇到过一些控件根据数据或当前选择更改属性(例如颜色)的情况。所以现在我在 Interface Builder 中指定了控件的初始默认颜色,但我必须在代码中指定数据驱动的颜色? Interface Builder 似乎又一次让我不得不在它的世界和代码之间拆分一些演示设置。我想有可能用一个了解我的数据或状态或其他任何东西的复杂插件来解决这个问题,但似乎我最终会维护大量存在的支持代码,以便 Interface Builder 体验保持“正确”。

我经常看到提到的其他事情是 IB 允许您定义组件之间的绑定(bind)是多么容易。 “你不用写任何代码就可以做到!”同样,我可能遗漏了一些东西,但据我所知,将一个属性绑定(bind)到另一个是一行代码。在 IB 中的一个框中设置几个属性真的比编写一行代码更好吗?为什么最好将相当于应用程序逻辑的部分放在表示层的规范中?

就像我在公开场合所说的那样,我对 Cocoa 的东西很陌生,但我觉得要么我遗漏了一些关于如何使用 Interface Builder 的非常重要的东西,要么它主要是为简单的演示应用程序设计的,具有很高的性能“哇”因素。

最佳答案

我发现 Interface Builder 非常适合获取应用程序的通用布局。它也非常适合绑定(bind)(在 Mac 上)之类的东西。但是,您无法使用 Interface Builder 创建 Delicious Library。您的界面越复杂,您需要编写的代码就越多。

关于objective-c - 为什么我觉得 Interface Builder 挡住了我的路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632760/

相关文章:

macos - XULRunner 30.0 升级

java - 如何使 JavaFX 在 mac(Visual Studio Code) 上工作?

java - 以 OSX 风格实现保存对话框

objective-c - 从文件读取 jpeg 失败,显示 "no such file",但文件显然在那里

macos - NSWorkspace openURL 无法使用文件类型的默认应用程序打开存储在 iCloud Drive 中的文件

ios - Objective-C/NSObject 指针与 C 指针的比较

swift - NSPopover 解雇不会将其从 parent presentedViewController 中删除(代码 11)

macos - 如何在 NSTextField 中添加 Cocoa 控件?

objective-c - 如何为 UIAlertView 文本字段设置最大字符串长度

iphone - 在 UIPageViewController 内容 View 中给出页码