我有一个UIViewController
从nib加载子视图并将其添加到其视图层次结构中的子视图。现在这在iPhone故事板上工作得很好,但在iPad中虽然我确实看到了视图,但由于未调用viewWillAppear
,视图上的UIImageView
未初始化。
这是主视图控制器(加载子视图的代码)的代码
SubViewController *controller = [[SubViewController alloc] init];
NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:@"x"] owner:controller options:nil];
UIView *subView = bundle[0];
[self addChildViewController:controller];
if (isPhone)
{
CGRect frame;
frame.origin.x = 0;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
view.frame = frame;
[self.scrollView addSubview:view];
}
else
{
view.frame = self.viewSlot.frame;
[self.viewSlot addSubview:view];
}
唯一的区别是在iPhone上它被添加到UIScrollView
,而在iPad上它被添加到UIView
。
viewSlot
和scrollView
都是正确初始化和工作的出口。即使在iPad上,我确实看到了我的视图(我改变了它的背景颜色),只是初始化(viewWillAppear
)没有运行。
答案 0 :(得分:0)
经过一段时间的比赛后,我已经成功了解了这一点。首先,我选择以不同的方式初始化控制器:
SubViewController *controller = [[SubViewController alloc] initWithNibName:[@"X" stringByAppendingString:idiom] bundle:nil];
我有一个例外,显示问题:view
插座未设置。本故事的教训:不仅仅是alloc
- init
控制器,请使用initWithNibName
初始化工具。由于一些尚未发现的iPhone / iPad之间的差异,早期的方法仍然适用于iPhone,这仍然很奇怪。