2

私はアプリケーションを開発しており、iOS5ストーリーボードを使用しています。基本的に私が持っているのは、いくつかのUIViewControllerとUISplitViewControllerを含むルートコントローラとしてのUITabBarControllerです。私がしたいことは、UISplitViewControllerのDetailControllerとしてUIPageViewControllerを使用することです。問題は、UIPageViewControllerがView Controllerを表示しないが、黒い画面が表示されることです。私は何をしてDetailControllerのviewDidLoadメソッドに2つのコンテンツView Controllerを初期化し、命令でそれらを割り当てることです:iOS5ストーリーボードUIPageViewController

[self setViewControllers:self.pagesViewControllerArray direction:UIPageViewControllerNavigationOrientationHorizontal animated:NO completion:nil];

間違いがどこにあるので、私は把握することはできません。

viewDidLoadメソッドは、次のとおりです。

- (void)viewDidLoad{ 

    self.dataSource = self; 
    self.delegate = self; 

    self.page1ViewController = [[Page1ViewController alloc] initWithNibName:@"Page1ViewController" bundle:nil]; 
    self.page2ViewController = [[Page2ViewController alloc] init]; 

    self.pagesViewControllerArray = [NSArray arrayWithObjects:self.page1ViewController, self.page2ViewController, nil]; 

    [self setViewControllers:self.pagesViewControllerArray direction:UIPageViewControllerNavigationOrientationHorizontal animated:NO completion:nil]; 

} 

私が関連付けられているそのペン先でのViewControllerおよび動的にロードされたそのビューでのViewControllerの両方を使用しようとしましたが、それは動作しません。

本当にありがとうございます。 ありがとう

答えて

0

まず、viewDidLoadが呼び出されていることを確認します。インスタンスが非常に多くの方法で初期化される可能性があり、各オプションがいつ使用されるかわかりません。 initWithNibNameを使用すると、正しく覚えていればviewDidLoadは呼び出されません。 ...それが呼び出されている場合は、デバッガコンソールに表示されます

NSLog(@"viewDidLoad: %@", NSStringFromClass([self class])); 

の方法は、あなたのようなのNSLog文を追加することができますと呼ばれていることを確認します。 initWithNibNameメソッドを追加して、それが呼び出されているかどうかを確認することもできます。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     NSLog(@"initWithNibName: %@", NSStringFromClass([self class])); 
    } 
    return self; 
} 

ストーリーボードが期待通りに機能しないことが判明しました。私が使い始めたのはコンテナビューです。彼らには何も気にしない。それらは、標準のUIViewControllerの周りのラッパーであるビューの内部に置くことができる視覚的な要素です。そして、デザインサーフェスは、他のビューに配置したコンテナビューと同じ次元の関連ビューを表示します。その後、そこの詳細を管理することができます。親View Controllerで初期化を処理する必要がある場合は、prepareForSegueメソッドを使用します。コンテナビューの埋め込みセグレットの名前を設定する必要があります(普通はあなたのようにプッシュセグが表示されません)。起動すると、コンテナビュー内の埋め込みビューコントローラであるdestinationViewControllerにアクセスできます。それを把握するにはちょっとした工夫が必要かもしれません。

オーガナイザの[ドキュメント]タブでUIPageViewControllerも参照してください。左の列の一番下にサンプルプロジェクトがありますが、それが役に立つかもしれません。

関連する問題