Iphone 为什么';initWithNibName是否适用于我的UIViewController子类?

Iphone 为什么';initWithNibName是否适用于我的UIViewController子类?,iphone,cocoa-touch,uiviewcontroller,nib,xib,Iphone,Cocoa Touch,Uiviewcontroller,Nib,Xib,我将UIViewController子类化为一个新类PageViewController(我正在编写一个简单的图书应用程序)。我想添加一个从nib文件加载的新视图,并使用以下代码。它起作用了 PageViewController *viewController1 = [[UIViewController alloc] initWithNibName:@"Page1" bundle:nil]; [viewController1.view setUserInteractionEnabled:YES]

我将UIViewController子类化为一个新类PageViewController(我正在编写一个简单的图书应用程序)。我想添加一个从nib文件加载的新视图,并使用以下代码。它起作用了

PageViewController *viewController1 = [[UIViewController alloc] initWithNibName:@"Page1" bundle:nil];
[viewController1.view setUserInteractionEnabled:YES];
[self.view addSubview:viewController1.view];
但是,第一行是错误的,因为我应该在PageViewController上调用alloc。当我纠正它(如下)时,代码会编译,但不会加载xib文件,并且视图是透明的

    PageViewController *viewController1 = [[PageViewController alloc] initWithNibName:@"Page1" bundle:nil];
[viewController1.view setUserInteractionEnabled:YES];
[self.view addSubview:viewController1.view];
PageViewController initWithNibName方法已取消注释,只是默认方法,设置self=[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]

我所尝试的: 在Page1 nib文件中,我尝试在PageViewController和UIViewController之间更改文件所有者类。是的,我记得后来把它连接回了视图插座


救命啊!我被难住了。

您在PageViewController中重写了loadView方法了吗? 如果将viewController1.view记录到NSLog中会怎么样


事实上,在Interface Builder中,您必须将文件的所有者设置为PageViewController,并将其视图连接到Interface Builder中的视图。

可能是错误在您重写的initWithNibName方法中。这只是默认值:-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil{if(self=[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]){//自定义初始化NSLog(@“在pageviewcontroller自定义初始化中”);}返回self;}谢谢!错误不在loadView中,而是在viewDidLoad中-我在PageViewController中的viewDidLoad中有一些代码覆盖了nib文件初始化。我昨晚从凌晨2点到凌晨4点一直在努力跟踪,谢谢你的帮助!