如何在 iOS 中构建由现有控件组成的自定义控件?

Posted

技术标签:

【中文标题】如何在 iOS 中构建由现有控件组成的自定义控件?【英文标题】:How do I build a custom control made up of existing controls in iOS? 【发布时间】:2013-11-05 05:55:09 【问题描述】:

我正试图弄清楚在 Xcode 中来自 visual-studio-land 的“自定义控件”的等价物是什么。我想要一个自定义的可重用控件,它只是分段控件旁边的一个文本框,其中包含一些自定义行为,但我不知道如何制作它。

我找到了有关制作totally custom control, with its own rendering 的文章,但这太过分了。我想组合现有的控件,而不是制作全新的控件。

我尝试创建一个新的“视图”并将其用作自定义控件,在其上放置一个文本框和一个复选框。但是该视图没有显示在我可以拖动到其他视图上的内容列表中(其中列出了按钮和滑块等)。

我可以使用右侧窗口中的“自定义类”窗格从我的自定义视图继承一个空白视图,但继承视图仍然只是......空白。底层控件不应该在设计器中绘制,我不应该能够调整暴露的属性吗?

我知道这是微不足道的,我只是不知道我必须做些什么微不足道的事情才能让它发挥作用。

【问题讨论】:

【参考方案1】:

您的自定义控件将需要一个自定义的 .m 和 .h 文件。如果你想使用界面生成器,它还需要一个.xib;看到这样的问题。 (Creating a custom view using a xib)

或者,您可以放弃 xib 并在 viewDidLoad: 中以编程方式设置视图。如果到目前为止您还没有这样做,那么现在可能是一个让您的脚湿透的好机会;这是一个重要的工具。

至于在 xCode 中指定您的自定义视图,界面构建器中的身份检查器允许您指定视图的类;您可以从下拉列表中选择一个自定义类,该类将在加载故事板时代替默认视图加载。

Apple 实际上建议通过将预定义的控件捆绑在一起来构建自定义控件,他们在 WWDC 的一次演讲中对此进行了讨论......我认为 'Advanced Appearance Customization on ios',从 2012 年开始。这可能是一个不错的起点。

【讨论】:

我会看谈话并报告。 讨论更多是关于如何自定义外观(考虑到标题,这很有意义),而不是制作组合控件。 您链接的答案是 C#,而不是 Objective-C。

以上是关于如何在 iOS 中构建由现有控件组成的自定义控件?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作可以添加到工具箱的自定义控件DLL?

我怎么能创建一个类似于这个的自定义标签栏

您如何在 WPF 中动态(通过代码)添加在 XAML 中制作的自定义控件?

WPF自定义控件,自定义控件中由多个button组成,如何给每个button添加不同事件处理?

Android 自定义View 三板斧之一——组合现有控件

如何启用预定项目的下拉列表以添加到 SceneBuilder 中的自定义控件?