如何创建可以在IB中拖放的可重用UIView?

时间:2012-11-16 17:22:33

标签: ios xcode interface-builder xcode4.5

我正在使用XCode 4.5。对于我当前的项目,我需要构建一个类似于文本字段的UI元素。因为我必须在一大堆ViewControllers中重用这个自定义元素,所以我正在寻找一种方法来构建这个自定义文本字段,以便我可以将它用于拖动和放大。放入XCode界面构建器,而不是仅以编程方式添加它(这是我到目前为止所发现的)。

我怎样才能做到这一点? 我正在寻找一个解释整个过程的教程。

规格:

我想要的结果是拥有一个自定义UIView,我可以像其他预定义UI元素一样使用它(例如文本字段)。这意味着我希望能够拖拽和将它从对象库中拖放到我的故事板中的某个控制器中,使用属性检查器编辑其属性,尤其是自定义属性,并获取有关IB中该更改的可视反馈。我不想一遍又一遍地对预定义的UIView进行子类化,原因有两个:

  1. 首先,将自定义子类添加到预定义的UI元素意味着更多工作,因为我需要一遍又一遍地重复我需要自定义的每个元素。或多或少,我的应用程序的整个视觉部分将构建自定义UI元素,以匹配我必须为我的客户实现的特定设计。
  2. 其次,更重要的是,如果我通过在应该保留自定义功能的子类中自定义其外观来以编程方式构建其中最大的部分,我实际上并不了解我的UI将如何最终出现。
  3. 最后,我认为通过生成程序的静态UI部分来打破iOS SDK提供的漂亮的MVC分离是一个糟糕的编码实践,这些部分在运行时将永远不会在控制器部分以编程方式进行更改。
  4. 这就是为什么我需要设计一个自定义UI元素(让我们调用它对应的类UITextFieldCustom),我可以在设计UI的过程中使用它,就像任何其他预制库对象(如文本字段)一样。这可能吗?

3 个答案:

答案 0 :(得分:2)

这需要一个Interface Builder插件(IBPlugin)。不幸的是,在Xcode 4中已经删除了对此的支持,但是在Xcode 3中存在。似乎这个功能也从Apple Developer Library中删除了文档。可以在http://www.brandonwalkin.com/bwtoolkit/找到使用IBPlugin实现的自定义控件的示例。

答案 1 :(得分:0)

您可以简单地复制粘贴它,在IB中选择您的uiview按CMD + C然后转到要粘贴的其他nib文件,单击空白区域并按CMD + V

答案 2 :(得分:0)

就像'titaniumdecoy'指出here是一个很好的解决方案:将内置类型拖到故事板中,例如文本字段。然后在实用程序栏中的身份检查器中定义自定义类,例如myTextField将