gpt4 book ai didi

iphone - initWithNib vs 将文件所有者设置为 viewcontroller 子类

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:15 27 4
gpt4 key购买 nike

我不理解 nib 文件与将文件所有者设置为 View Controller 子类的作用。如果我将 nib 的文件所有者设置为我的子类,那么当我实例化子类时,nib 似乎加载了它的所有 subview 。为什么我需要 initWithNib?

在另一种情况下,我注意到当我在 nib 中创建一个 TableView ,向该 TableView 添加一个搜索栏并将文件所有者设置为 uitableviewcontroller 的子类时,搜索栏不会显示,除非我使用 initWithNib。为什么我在这种情况下需要 initWithNib 而我在之前不需要?

最佳答案

我很难理解你的问题。

-initWithNibName:bundle: 是 UIViewController 的指定初始化器。如果需要,您可以为 nib 名称和 bundle 传递 nil,在这种情况下,默认行为是查找与应用程序 bundle 中的 View Controller 子类同名的 .xib 文件。因此,具有相同名称的 View Controller 和 .xib 并简单地为名称和包传递 nil 并不少见。然而,你可以有几个不同的 nibs,它们都可以与同一个 View Controller 子类一起工作。例如,您可能有一个 Nib 纵向放置,另一个 Nib 横向放置,您可以根据设备的方向决定使用哪个。

文件所有者是 nib 中的一个对象,它是加载 nib 文件的对象的代理。您可以(并且应该)设置它的类型,以便 Interface Builder 将知道加载文件的对象可以预期提供哪些导出和操作,从而可以连接到文件所有者代理的内容。当应用程序运行并且对象加载 nib 时,该 nib 内连接到文件所有者的任何对象将改为连接到加载文件的对象。这是 nib 内的对象可以与应用程序的其余部分进行通信的主要机制。

因此,尽管 File's Owner 和 -initWithNibName:bundle: 都在加载 nib 中发挥作用,但它们的作用截然不同,而且大多是正交的。如果您在某些 View Controller 上成功调用 -init 并发现 nib 已加载,则很可能是 -init 的实现调用了 -initWithNibName:bundle: 并为两个参数传递了 nil,如上所述。

关于iphone - initWithNib vs 将文件所有者设置为 viewcontroller 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5318095/

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