gpt4 book ai didi

objective-c - Storyboard对象库中的 "Object"可以做什么?

转载 作者:太空狗 更新时间:2023-10-30 03:26:06 25 4
gpt4 key购买 nike

小问题

在 XCode 的界面生成器的对象库中有一个叫做 Object 的东西。我想知道使用这个“对象”可以完成什么样的任务。

具体来说,它是Storyboard(或xib)中的一个NSObject。描述如下:

Provides a template for objects that are not directly available in Interface Builder. You can turn this object into an instance of any class using the custom class inspector.

长问题

我正在尝试构建一个 UITableViewController 以及一个 UISearchController。由于他们都需要在他们的委托(delegate)中实现 UITableViewDelegateUITableViewDatasource,我希望我可以将 UISearchController 的委托(delegate)分配给 Main 以外的对象UITableViewController

我正在寻找一种在 Storyboard 中实现此目的的方法,而不是在 viewDidLoad 中手动分配委托(delegate)。特别是,通过弄清楚 Object 在 Storyboard 中的工作方式。

我知道我可以通过检查 UITableView 的父级来区分它们。但是将逻辑分离到不同的对象总是好的。它将更容易实现,效率更高,结构更好,并且可以重用。

提前致谢。

我尝试过的

  • Object 放在 Storyboard 中与 UITableViewController 相同的级别(您不能将 Object 放在另一个 UIViewController).
    将它与 UITableViewController 中的 @property (nonatomic, weak) IBOutlet NSObject * 链接。
    当我在 viewDidLoad 中打印时,NSObject * 结果是一个 nil 指针。没有运气。
  • 通过将属性更改为 @property (nonatomic, strong),它变成了 UICustomObject 而不是 nil。看来我在正确的轨道上。

最佳答案

正如您所注意到的,Object 使其成为任何类的对象,包括您自己的自定义类,在加载 XIB/Storyboard 时被实例化。您获得 UICustomObject 的事实表明 XIB/Storyboard 加载机制不知道对象应该是什么类,或者找不到您指定的类(通过运行时查找)。

解决方案是确保在自定义类检查器中为对象指定正确的类:

enter image description here

当然,您还需要确保相关类的实现文件在您的项目中并且包含在您的目标中。

最后,对指向自定义对象的 IBOutlet 使用 strong 是正确的,因为它是顶级对象,顶级对象应该使用 strong 属性引用。 (如果您真的很好奇,Mike Ash 对 XIB/Storyboard 导出内存管理的细节有很好的 article,包括 OS X 和 iOS 在这方面的差异。)

关于objective-c - Storyboard对象库中的 "Object"可以做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11597118/

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