Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 向Interface Builder(IB)Xcode添加自定义控件_Objective C_Xcode_Interface Builder - Fatal编程技术网

Objective c 向Interface Builder(IB)Xcode添加自定义控件

Objective c 向Interface Builder(IB)Xcode添加自定义控件,objective-c,xcode,interface-builder,Objective C,Xcode,Interface Builder,我完成了这篇精彩的教程:并提出了两个问题: 上面的示例使每个UISlider都可以定制。你能不能把UISlider子类化并调整代码,使其成为自己的类来调用 此外,您是否可以在Interface Builder中的对象资源管理器中使用此自定义控件,这样您就可以像UIKit中的任何其他控件一样将其拖放到视图中 CoCoatTouch类的文档通常会指出一个类是否不是为子类而设计的。对于UISlider,还有一些自定义外观的说明 界面生成器中的自定义组件 要在Interface Builder中使用自定

我完成了这篇精彩的教程:并提出了两个问题:

  • 上面的示例使每个UISlider都可以定制。你能不能把UISlider子类化并调整代码,使其成为自己的类来调用

  • 此外,您是否可以在Interface Builder中的对象资源管理器中使用此自定义控件,这样您就可以像UIKit中的任何其他控件一样将其拖放到视图中


  • CoCoatTouch类的文档通常会指出一个类是否不是为子类而设计的。对于UISlider,还有一些自定义外观的说明

    界面生成器中的自定义组件

    要在Interface Builder中使用自定义组件,必须使用“对象”组件,并为自定义类指定类类型。不幸的是,这不会呈现任何可视队列,比如核心UIKit类

    您自己的插件

    也许可以提供一个插件来调整Xcode,但是这不是一个小任务,因为没有官方文档,所以有必要在GitHub上搜索开源插件,等等,并研究代码。即使如此,该插件也可能与后续版本的Xcode发生冲突

    推荐方法

    Interface Builder是一项惊人的技术,但是对于更复杂的应用程序,我建议在代码中实现视图(在VC中重写loadView)。以下是一些原因:

    • 促进更好的封装和重用。您可以使用UIKit组件组合您自己的组件(例如组合与继承),并为它们提供自定义的OO接口。与此相反,视图控制器中有大量IB插座,这导致重用性差

    • Fat控制器并不真正尊重MVC范式

    • 更加灵活流畅。并非所有的属性都是通过IB公开的,因此在复杂的情况下,很难知道在哪里查找。这是IB设置还是代码设置?例如,自定义字体

    • 在多人团队中合并XIB非常棘手


    这是非常好的信息,非常感谢。