0

ARCでtabBarアプリを作成しました。したがって、デフォルトの設定では、2つのviewControllerが自動的に提供されます。

1)FirstViewController.h、FirstViewController.m; FirstViewController_iPhone.xib、FirstViewController_iPad.xib

2)SecondViewController.h、SecondViewController.m、SecondViewController_iPhone.xib、SecondViewController_iPad.xib

新しいビューコントローラ「ViewController3」を作成したかったのですが、ファイル作成プロセス中に、iPad用に作成するかiPhoneのみ用に作成するかを選択できます(チェックボックス「iPadを対象」)。私のために作成されたFirstViewControllerとSecondViewControllersのように、iPhoneとiPadの両方のxibsが必要です。そこで、xibを手動で作成し、xibsを使用せずにファイルの作成を続行することにしました。

だから当然、その後私は手動で2つのニュースxibsを作成しました。ThirdViewController_iPhone.xibおよびThirdViewController_iPad.xib

この行を元のAppDelegeateファイルに追加しました。

UIViewController *viewController1, *viewController2, *viewController3;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil];
    viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil];
    viewController3 = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController_iPhone" bundle:nil]; 
} else {
    viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPad" bundle:nil];
    viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController_iPad" bundle:nil];
    viewController3 = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController_iPad" bundle:nil];
}
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, viewController3, nil];

次に、プロジェクトを実行して、これを取得しました:キャッチされない例外'NSInternalInconsistencyException'によるアプリの終了、理由:'-[UIViewController _loadViewFromNibNamed:bundle:]は「ThirdViewController_iPhone」ペン先をロードしましたが、ビューアウトレットが設定されていませんでした。

コンセントを設定するにはどうすればよいですか?

4

1 に答える 1

4

ThirdViewController_iPhone.xibについては、こちらの手順に従ってください。私はあなたがこのステップを行う必要があると思います:

  • その下に「ビュー」が表示された「アウトレット」が表示されます。その横にある円を左側のバーの「表示」アイコンにドラッグします
于 2012-07-31T09:13:34.990 に答える