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的主要内容,如果未能解决你的问题,请参考以下文章