如何在 nib 中传递对对象的 init 方法的引用?

Posted

技术标签:

【中文标题】如何在 nib 中传递对对象的 init 方法的引用?【英文标题】:How to pass references to init method of object in a nib? 【发布时间】:2011-01-13 19:35:26 【问题描述】:

我有一个 UIView 子类,它目前完全以编程方式组装自己。它有一个自定义的 initWithFrame:bundle: 初始化器,这是必要的,因为它使用传入的包来加载图像资源。

我想让这个视图成为一个更大的 nib 文件中的子视图,但是当 nib 加载代码到达它而不是我的自定义初始化程序时,将调用 initWithCoder。有什么方法可以将这个视图放在一个 nib 中并且仍然进行我的自定义初始化?

【问题讨论】:

【参考方案1】:

是的,如果你的包是提前知道的,你也可以覆盖initWithCoder:(阅读:你不需要它作为参数传入)。否则,不行。

【讨论】:

不幸的是,它没有提前知道,所以我想我坚持使用程序化方法。谢谢。【参考方案2】:

如果您可以等到awakeFromNib,您可以在那里进行初始化。但是,您仍然存在无法将捆绑包传递给方法的问题。由于awakeFromNib 在所有出口和操作的初始化和设置之后被调用,对你来说可能为时已晚。或许围绕笔尖加载系统重新设计会更好?

【讨论】:

developer.apple.com/library/ios/#documentation/UIKit/Reference/… -awakeFromNib 自 2.0 起在 iOS 上可用:developer.apple.com/library/ios/#documentation/UIKit/Reference/… @Nathan,哈哈,你不到一分钟就打败了我!

以上是关于如何在 nib 中传递对对象的 init 方法的引用?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建对对象的引用以在 iOS 中对其进行动画处理

整理ViewController的生命周期和加载过程

如何获取对 .nib 文件中对象的引用?

使用方法[NSBundle loadNibNamed:xibName owner:[NSApplication sharedApplication]]加载Nib时如何传递参数?

为啥不调用基于 nib 的自定义表格单元格的 init 方法

iPhone核心数据:如何在NIBS之间传递和获取实体