3

我的应用程序需要一个包含许多按钮、文本字段和矩阵的界面。他们需要不时改变。现在我通过在 IB 中已经拥有所有元素并在需要时隐藏/显示/移动它们来做到这一点。其他人会推荐什么?我应该这样做吗?我应该使用 NSTabView 吗?NSView?应该以编程方式创建元素吗?如果是这样,如果我有一个已经创建的元素,我需要再次不需要更改,该怎么办?释放它并再次创建它是一种浪费。

任何帮助将不胜感激。

4

2 回答 2

2

在我看来,如果您必须为很多视图设置动画,最好以编程方式创建界面。如果只是隐藏/取消隐藏它们,IB 效果很好,但如果您需要重新布局或动态创建未知数量的视图,则不值得尝试使其全部与 nib 文件一起使用。

至于一般建议:

  • 为您将要使用的每一种元素创建子类(来自UIView或它们的子类之一)。UIControl将您的UIViewController.

  • 研究标准的 Cocoa 视图类,并尝试在您自己的控件和视图中创建类似的 API:s。

  • 将尽可能多的数据(子元素定位等)放入 plist,以便您可以轻松地从一个集中位置更改它,而不必在代码中四处寻找。

如果您经常创建几十个短期视图,则值得将它们保存在池中并重用它们。但是,如果只是间歇性地添加和删除几个标签,我不会太担心。像往常一样:不要过早优化。

于 2010-02-23T16:31:59.143 回答
1

您当前的方法听起来不错。如果您要显示/隐藏它们但否则它们保持不变,当您的 XIB 保留您已经需要的“冻干”副本时,为什么还要用代码创建它们呢?

只要您将它们保留在逻辑组中,您就可以移动/交换/显示/隐藏组的容器(如 NSBox 或 NSView)。如果您有很多逻辑组,但并非总是在每个会话中显示,您可以将它们分离到自己的 XIB 中,并仅在需要时加载它们,以节省启动时间和内存。

如果你使用 NSViewController,那就更好了,因为你可以为每个逻辑组做干净的休息。将面板加载为视图,视图控制器将保留出口/操作,并与 xib 具有一对一的关系。

于 2010-02-23T16:29:58.630 回答