2009-07-01 15 views
14

私はUIViewControllerを新しいクラス、PageViewControllerにサブクラス化しました(私は単純なブックアプリケーションを書いています)。 nibファイルから読み込んだ新しいビューを追加したいと思い、次のコードを使用しています。できます。私のUIViewControllerサブクラスでinitWithNibNameが機能しないのはなぜですか?

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方法は、コメントを解除されていると自己= [スーパーinitWithNibName:nibNameOrNilバンドル:nibBundleOrNil]を設定し、単にデフォルトでました。

私が試したこと: Page1 nibファイルで、私はPageViewControllerとUIViewControllerの間でFile Ownerクラスを変更しようとしました。はい、その後、ビューアウトレットに接続することを思い出しました。

助けてください!私は困惑している。

+0

エラーの可能性がありますそれは単にデフォルトだ – oxigen

+0

あなたオーバーライドinitWithNibName方法である: - (ID)initWithNibName:nibNameOrNilバンドル:(自己= [スーパーinitWithNibName場合(NSBundle *)nibBundleOrNil { :(NSStringの*)nibNameOrNilバンドル:nibBundleOrNil]){ //カスタム初期化 \t \t NSLog(@ "In pageviewcontroller custom init"); } return self; } – niels

答えて

16

PageViewControllerでloadViewメソッドをオーバーライドしましたか? viewController1.viewにNSLogを設定するとどうなりますか?

実際、Interface Builderでは、ファイルの所有者をPageViewControllerに設定し、そのビューをInterface Builderにあるビューに接続する必要があります。

+2

ありがとうございます!バグはloadViewではなく、viewDidLoadにありました。 - PageViewControllerのviewDidLoadに、nibファイルの初期化を上書きしていたコードがありました。私は昨夜、午前2時から午後4時まで、それを追跡しようとしました、助けてくれてありがとう! – niels

関連する問題