NSObject 用 nib 加载 UIView 但文件所有者是 UIViewController

Posted

技术标签:

【中文标题】NSObject 用 nib 加载 UIView 但文件所有者是 UIViewController【英文标题】:NSObject loading UIView with nib but fileowner is UIViewController 【发布时间】:2013-12-10 10:25:53 【问题描述】:

我有一个自定义对象,它处理一些视图操作。基本上,它使用 nib 文件初始化 UIView。但我希望我的视图控制器负责处理 IBAction。所以我将我的视图控制器设置为文件所有者并连接 IBActions。

在我的自定义对象中,我像这样加载 nib 文件:

self.nibView = [[[NSBundle mainBundle] loadNibNamed:@"nibName" owner:delegate options:optionsDict] lastObject];

我将我的 UIViewController(有点奇怪)的委托设置为所有者。所以我希望我的视图控制器能够处理 IBAction,但它没有。我的自定义对象试图响应该操作,当然应用程序由于未响应选择器而崩溃。我怎样才能做到这一点?

编辑:

视图控制器

自定义对象

笔尖文件

【问题讨论】:

这里的 nibView 是什么?我的意思是它是一个数组?? 不,这是自定义视图。 首先,loadNibNamed 方法返回一个数组。所以你不能返回视图 我正在分配给数组的lastObject 哦,我没看错。那么现在您想以编程方式编写操作方法吗? 【参考方案1】:

委托是一个协议,所有者应该是一个对象。

如果你的视图控制器符合委托协议,你应该设置owner:self 并确保视图的委托属性设置为您的视图控制器。这可以在 IB 中使用 IBOutlet 来完成,或者在代码中通过以下方式完成:self.nibView.delegate = self

【讨论】:

我知道委托是一个协议,这就是为什么我在那里写的有点奇怪,但我无法理解你的解决方案

以上是关于NSObject 用 nib 加载 UIView 但文件所有者是 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

从 nib 文件加载 UIView?

从 Nib 加载的 UIView,手动调用 autolayout

无法将 NIB 文件加载到 UIView

从 NIB 加载 UIView - 帧大小错误

UIView 在加载 NIB 文件后立即显示?

为 StoryBoard 中 ViewController 中使用的 UIView 加载 Nib