gpt4 book ai didi

iphone - Interface Builder 中的自定义 UIView

转载 作者:行者123 更新时间:2023-12-03 18:29:01 25 4
gpt4 key购买 nike

我试图让事情井井有条,并为我的应用程序创建 View 层次结构。例如,我想创建一个自定义 View 来显示一些文本,另一个自定义 View 来显示进度,然后在使用基于 View 的应用程序模板创建的主视图中使用所有这些 View 。

我知道如何以编程方式创建它 - 您创建UIView子类,实现drawRect方法,在Interface Builder中放置一个空的UIView并机会它是我的自定义类的。我的问题是我想在 Interface Builder 中以编程方式创建这些自定义 View

到目前为止,我已经使用 XIB 文件创建了 UIViewController Controller ,并在 View Controller 的 viewDidLoad 方法中从模板创建了自定义 View Controller 实例并将其 View 添加为 Interface Builder 中添加的空 UIView 的 subview (与以编程方式更改 Class 相同)。

它确实有效,但对我来说更像是一种黑客攻击,我很难相信没有更好的方法可以在界面生成器中添加这些自定义 View 而无需实现 viewDidLoad 方法并创建 Controller 并在该方法中添加它们的 View 。

最佳答案

这原本是 Ratinho 帖子中的一条评论,但变得太大了。

尽管我自己的经验与此处和上面提到的所有内容一致,但有些事情可能会减轻您的痛苦,或者至少让事情感觉不那么麻烦。

从公共(public)类(例如 EmbeddableView)派生所有自定义 UIView 类。将所有 initWithCoder 逻辑包装在此基类中,使用类标识(或可重载方法)来确定要从中初始化的 NIB。这仍然是一个黑客,但你至少正式化了接口(interface)规则并隐藏了机制。

此外,您可以通过使用与您的自定义 View 配对的“微 Controller ”类来进一步增强您的 Interface Builder 体验,以处理其委托(delegate)/操作方法,并通过其自己的委托(delegate)协议(protocol)弥合与主 UIViewController 的差距。所有这些都可以使用 Interface Builder 中的连接器连接在一起。

底层 UIViewController 只需要实现足够的功能来满足“微 Controller ”委托(delegate)模式。

您已经了解了通过更改类名称和处理 Nib 加载来添加自定义 View 的详细信息。 “微 Controller ”(如果使用)可以只是 NSObject 派生类 added to the NIB as suggested here .

虽然我在个别情况下完成了所有这些步骤,但我从未将其一直采用到这种正式的解决方案,但通过一些规划,它应该相当可靠和健壮。

关于iphone - Interface Builder 中的自定义 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com