- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 UIView 子类,我想从 NIB 文件实例化它。我一直使用这个方法来做到这一点:
UINib *nib = [UINib nibWithNibName:@"SSNodeToolsView" bundle:[NSBundle mainBundle]];
self = [[[nib instantiateWithOwner:self options:nil] objectAtIndex:0] retain];
...事实上,这正确地创建了对象并将所有内容链接起来。但是,该对象立即失去对其委托(delegate)的访问权限。委托(delegate)以通常的方式声明:
id delegate
@property (nonatomic, assign) id delegate
@synthesize delegate
...等等。然而,当对象从其 Nib 加载时,委托(delegate)立即变为 null 并忽略任何为其赋值的尝试。奇怪的是,这不会导致崩溃。谁能告诉我这是为什么?我更喜欢使用 Nib 加载方法,因为我的应用程序的这些元素可能会经常重新设计,并且使用 Nib 最容易做到这一点。
- Ember
最佳答案
编辑:将关键点移至顶部。您不能同时创建一个对象并将其设置为文件的所有者,所有这些都在同一个 Nib 中。文件的所有者必须是一个已经存在且已初始化的对象,且 socket 变量为零,以便 Nib 加载能够正确连接到所有者的 socket 。
委托(delegate)对象也在 Nib 中吗?如果没有任何东西保留它(您的属性是“分配”),它可能会在下一个自动释放池排出时消失。代表是你 Nib 上的 socket 吗?加载 Nib 后 socket 中的“nil”值通常表明 socket 连接不正确。另外,您似乎正在使用尚未初始化的所有者对象(自身)实例化 Nib ?如果是这样,您的 socket 可能无法正确连接,因为只有当所有者对象中的相应值为零时, socket 才会连接。在将其用作加载 Nib 的所有者之前,您应该拥有一个完全初始化的所有者对象。
这是我在我的一个项目中使用的“从 Nib 加载此对象”初始化代码:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
// Initialization code.
//
[[NSBundle mainBundle] loadNibNamed:@"ScoreView" owner:self options:nil];
[self addSubview:self.view];
}
return self;
}
- (void) awakeFromNib
{
[super awakeFromNib];
[[NSBundle mainBundle] loadNibNamed:@"ScoreView" owner:self options:nil];
[self addSubview:self.view];
}
使用 nibs 具有无法避免的内置间接级别。您不能创建一个对象并同时将其用作文件的所有者 - 所有者必须已经存在并在 nib 加载时初始化(使用 nil 导出)。
使用上面的代码,我可以从代码创建我的对象,或者将其直接放入其他 nib 文件中——一个可重用的 UIView 组件。
关于iphone - 使用 NIB 文件用委托(delegate)实例化 UIView 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5146791/
我正在尝试在手写笔中使用 Nib CSS3 扩展。安装了手写笔和 Nib (尝试了本地和全局 -g)。但没有一个工作,当我做 stylus styles.styl > build/styles.css
我们当前的best-practice for custom views是: 在 Nib 中构建自定义 View 。 在 View Controller 中,以编程方式加载 Nib,从加载的对象数组中获
我是界面构建器的新手,我想要一个包含 UIView 的 3x3 网格的屏幕,每个网格都包含一个 UIImageView 和 4 个 UILabels。 我的逻辑可能有缺陷,但我试图实现这一目标的方式是
我有一个用 Swift 编写的框架/模块,它提供了一些具有 IBDesignable 功能的自定义控件。 目前我正在开发一个基于 CollectionView 的控件。 CollectionView
我有两个 nib 文件 - Main.nib 和 Preference.nib在 Main.nib 文件中,我有一个 NSView 类的实例。它的窗口有一个NSPopUpButton,单击它会显示一个
我想创建一个节标题来加载一个 nib 文件并将其设置为标题 UIView。这个 nib 文件还将有一个关联的类,其中连接了 outlets 和 action,所以我想像平常一样用 nib 加载那个类。
我正在尝试使用来自 this pre-built page menu pod from github 在说明中,它说: var controller : UIViewController =
我是 Cocoa 新手,无法将我的 nib 文件拆分为多个 nib 文件。 我的MainMenu.nib包含一个Tracker Controller对象,它是NSObject的子类。它在我的主菜单中有
我通过 XIB 创建了 CustomViewController。 我还通过作为 UIView 子类的不同 XIB 文件创建了 CustomView。 然后我将 UIView 绑定(bind)到 Cu
我正在使用自定义 UITableViewCell。当我尝试运行我的代码时,我得到了这个异常堆栈,我无法理解问题的根源: terminating app due to uncaught exceptio
我有两个 Nib ParentViewController.xib ChildViewController.xib ParentViewController.xib 包含一个 UIView 和一个 U
我一开始使用了一些 NSWindows 项目,但我的 GUI 正在不断发展,这些元素将更适合作为 NSViews。有没有办法将 NSWindow NIB 转换为 NSView NIB? 最佳答案 不存
我想要具有正确顺序的 View Controller 生命周期功能的完整列表。请任何天才。 请指定ViewController生命周期函数. 请指定序列号,例如用法:,并且仅使用简短描述。示例: 与使
我有两个 Nib :Parent.xib 和 Child.xib。 我已将子 Nib 包含在父 Nib 内以简化绑定(bind)。我在 loadView 中以编程方式设置 subview 。问题是,a
我正在开发一款通用应用程序,iPhone 版本运行良好。我为 iPad 创建了一个新的 nib,并将文件所有者设置为 viewcontroller 类。我连接了所有的 IBOutlets 和 IBAc
我有两个 UIViews,我将它们称为 A 和 B。 A 是B 的容器,每一个都是使用Interface Builder 创建的。 我需要使用界面生成器将我的 B View 添加到 A 中,如下图所示
谁能解释什么时候对同一个 NIB 文件使用多个 View 比使用多个 NIB 文件更好? 一个 NIB 文件可以包含多个 View ,因此有时使用一种方法比使用另一种方法更好。 我是不是太含糊了? 最
简单的任务:我有一个带有 2 个 NIB 文件的应用程序(每个 NIB 文件都有自己的 Controller )。我已经成功地显示了第二个 NIB 文件的窗口,就像我想要的那样,但现在,我想单击 NI
目前,我有一个托管上下文、许多相互关联的实体 NSArrayController,以及几个 Windows,每个 Windows 都使用 1 或 2 个 NSArrayController。 Wind
尝试创建一个 tableView 单元格 xib,但遇到错误“加载了 nib 但未设置 View 导出” 我读过很多帖子,大多数人都说将“ View ”从文件所有者拖到 IB View 。 但是,如果
我是一名优秀的程序员,十分优秀!