【发布时间】:2012-11-15 14:45:22
【问题描述】:
首先让我说我已经搜索过 Google,虽然很多人都有类似的问题,但我没有看到任何关于以下奇怪行为和补救措施的内容。
我创建了一个 UIViewController 并将 nib 与几个 IBOutlets 关联。在尝试从另一个类中使用这个 nib 时,我发现在使用 initWithNibName:bundle: 实例化它之后,IBOutlets 仍然是 nil。
我确认它们连接正确,是的,它们正在合成,但仍然没有。在进一步调查时,我将 initWithNibName 方法更改如下:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
UIView *view = self.view;
NSArray *subviews = self.view.subviews;
NSLog(@"Loaded view containing %d subviews.", [subviews count]);
}
return self;
}
令人难以置信的是,这里添加了三行,创建一次性变量和日志记录,使得 IBOutlets 能够正确连接并从外部工作。
我已经清理并重建并重新启动了我的机器,但如果我删除这些行,它仍然会停止工作。我在这里真的很困惑,并担心我有某种伏都教工作,这会在我发货的那一刻破坏。对可能发生的事情有任何想法吗?
【问题讨论】:
标签: objective-c ios xcode xib iboutlet