1

关于从 Nib 文件加载 UIView 有很多问题,所以这不是问题。我从 Nib 文件加载 UIView 就好了,问题是,根据我设置视图的方式,我要么没有用户交互,要么 IBActions 导致崩溃。

场景 0:

- (id) init {
self = [super init];

if (self) {
    [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
    [self addSubview:self.view];
}

return self;

}

结果:这会从 Nib 加载视图,但 UIButtons 不可点击。我还注意到它背后的视图控制器的主视图仍然是交互式的,即使这个视图应该阻止它。

场景 1:更改此行

[self addSubview:self.view]

self = (MyView*)self.view;

导致视图阻止其后面的主视图控制器视图,并且按钮子视图变为可点击,但是......当我将按钮的选择器连接到 IBAction 时,它会导致崩溃并出现错误:

-[MyView performSelector:withObject:withObject:]: message sent to deallocated instance 0x12f1cff0

为什么在这种情况下我的视图被解除分配?在有人问之前,我只是像这样添加子视图:

MyView *myView = [[MyView alloc] init];
[self.view addSubview:myView];

编辑:有趣的是,我还注意到 awakeFromNib 从未被调用(在任何一种情况下)。应该是吗?

4

1 回答 1

1

指定的初始化器是 initWithFrame

除此之外 :: IBOutlet 的视图如何?

于 2012-11-08T19:55:05.827 回答