我对Cocoa for MacOSX很新,但我不禁觉得我一直在与Interface Builder对抗。
我目前的情况是我正在构建一个具有多个自定义控件和视图的应用。我开始在Interface Builder中构建应用程序,因为它最初很容易拖动,并使用正确的颜色和正确的自动调整规则将它们放入正确的位置。然而,现在是开始构建我的自定义控件和视图的时候了 - 我无法在Interface Builder中很好地代表它,而无需完成构建IBPlugin的工作!我所知道的唯一另一个选择是拥有一个Interface Builder文档,其中包含一堆“自定义视图”,只更改了类。即使对IB感到麻烦,这似乎也毫无意义 - 尤其是考虑到这些控件和视图将具有需要设置的颜色等属性的事实 - 就像IB文档中已有的其他视图和控件一样。所以现在我已经在两个断开连接的位置设置了可视化属性,似乎与IB的一个潜在优势相反,这使得调整应用程序的UI相对容易,而无需深入研究代码。
我还面临一种情况,即一些控件会根据数据或当前选择更改属性(如颜色)。所以现在我在Interface Builder中指定了控件的初始默认颜色,但我必须在代码中指定数据驱动的颜色? Interface Builder似乎再次让我必须在它的世界和代码之间拆分一些表示设置。我想有可能通过一个了解我的数据或状态或其他的复杂插件来解决这个问题,但似乎我最终维护了大量的支持代码,因此Interface Builder的经验仍然是“正确的”。
我经常看到的其他一些内容是IB允许您轻松定义组件之间的绑定。 “你可以不用编写任何代码就可以做到!”同样,我可能会遗漏一些东西,但据我所知,将一个属性绑定到另一个属性是一行代码。在IB中的框中设置几个属性真的比编写一行代码要好吗?为什么在表示层的规范中加入应用程序逻辑会更好?
就像我在公开场合说过的那样,我对这个Cocoa的东西很陌生,但我觉得要么我缺少一些非常重要的关于如何使用Interface Builder的东西,要么它主要是为那些具有高度的琐碎演示应用而设计的“哇”因素。
答案 0 :(得分:7)
我发现Interface Builder非常适合获取应用程序的通用布局。对于像绑定这样的东西(在Mac上)也很棒。但是,您无法使用Interface Builder创建Delicious Library。您的界面越复杂,您需要编写的代码就越多。
答案 1 :(得分:6)
Interface Builder可能需要一点时间习惯。但是,如前所述,使用它越多,它就越好。当然,自定义视图可以在代码中完成,但IB是一个标准。社区将Mac应用程序保持在某些UI质量标准,远远高于其他平台的UI标准。 IB使得遵守这些标准比在代码中执行任何操作更容易,没有可视化参考。
您无需在代码中执行任何操作即可将UI用于版本控制。我的所有Cocoa项目都在他们自己的git存储库中,包含nib / xib文件。
所以给IB一个机会。只要你使用它就越容易。
答案 2 :(得分:2)
答案 3 :(得分:1)
我的第一个可供销售的iPhone程序,以及我正在开发的第二个iPhone程序都不使用Interface Builder。我喜欢在代码中拥有所有内容,以便我能够理解正在发生的事情,以便我可以使用版本跟踪来跟踪所有更改。
据我所知,这归结为偏好问题。有可可书籍使用两种风格(IB和没有IB)。