首先让我说我已经搜索过谷歌,虽然很多人都有类似的问题,但我没有看到任何与以下奇怪的行为和补救措施有关的东西。
我创建了一个 UIViewController 并将 nib 与几个 IBOutlets 关联。在尝试从另一个类中使用这个 nib 时,我发现在使用 initWithNibName:bundle: 实例化它之后,IBOutlets 仍然为零。
我确认它们已正确连接,是的,它们正在合成,但仍然没有。在进一步调查时,我将 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 正确连接并从外部工作。
我已经清理并重建并重新启动了我的机器,但是如果我删除这些行,它仍然会停止工作。我在这里真的很困惑,并担心我有某种伏都教工作,这会在我发货的那一刻破坏。关于可能发生什么的任何想法?