通过广泛的在线文档和开发中心的各种代码示例,我感到困惑。 Apple建议在创建视图时始终使用IB,然而,在许多代码示例中,视图完全由代码创建(在viewController的loadView方法中初始化)。 对于何时应该使用IB而不是代码来创建视图,是否存在“最佳实践”?
答案 0 :(得分:2)
没有严格的规则,但总的来说,视图越复杂,我就越倾向于使用IB。像NavigationView中的TableView这样非常简单的东西几乎总是在代码中。更复杂的布局,如具有数十个输出标签的详细视图,将倾向于在IB中布局。
那就是说,如果由于某种原因我不希望在最终产品中包含XIB,例如这是否适用于静态库,我将从IB开始,然后使用NIB to code转换器
答案 1 :(得分:1)
就个人而言,我建议纯粹使用代码创建视图。它为您提供了对视图中所有对象外观的极大控制,并且在触发事件或需要响应时使对象更容易访问。
从个人经验来看,我总是倾向于忘记链接来自IB中的文件所有者的内容,并最终花费数小时试图找到正确的小圆圈来重新连接。全部采用代码方式。
答案 2 :(得分:1)
从书中 iPhone编程:大书呆子牧场指南
如果视图没有子视图,请以编程方式创建。如果它有子视图,则创建一个XIB文件(即使用Interface Builder)。
答案 3 :(得分:1)
个人经验 - IB一路走来。我更喜欢看到我在做什么,而不是猜测([myView size] .height / 2 + 15)%3会是什么样的。
答案 4 :(得分:1)
我总是从Interface Builder开始。有时需要将代码放入代码中,但在视图设计的早期阶段,IB的可视化布局使得原型设计的数量级更快更容易。
答案 5 :(得分:0)
我认为如果您需要为整个屏幕创建视图,IB是一个不错的选择。它更容易维护,修复bug。
如果你只是想做一个简单,快速的视图,并且需要在某个位置创建子视图,你应该去编码。
我认为这对大多数情况来说已经足够了
答案 6 :(得分:0)
如果您要求以编程方式创建布局和实例化,而不是从nib / bundle加载视图...这有点超出我的深度。但我建议加载bundle / nibs vs programmatic,除非你正在做一些花哨的OpenGL东西,并在方向和系统(iPad / iPhone)之间改变很多模式。 IB可能无法帮助你...
答案 7 :(得分:0)
我正在研究一个项目,只是找到了使用代码而不是Interface Builder的具体案例。我从Web服务获取数据,数据确定我在视图中需要多少UILabel。另外,如果我需要两个UILabel而不是一个,那么它们下面的所有东西都需要在屏幕上向下滑动。没有办法告诉Interface Builder这样做。
总之,如果您有可变数量的子视图或子视图的位置可能会根据您的数据而改变,请使用Objective-C而不是Interface Builder。