1

IPad 6.0シミュレーターでアプリをランチしようとすると、毎回同じ問題が発生します。*キャッチされない例外'NSInvalidArgumentException'が原因でアプリが終了します。理由:' UISplitViewControllerは、UIUserInterfaceIdiomPadで実行している場合にのみサポートされます。

そして私は本当に理由がわかりません

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad){UISplitViewController spvc =(UISplitViewController)self.window.rootViewController; spvc.delegate = [spvc.viewControllers lastObject]; }はYESを返します。}

どうしてここでエラーになるのか/またはどこに

- (void) :(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc {

barButtonItem.title = @"Master";
NSMutableArray *items = [[self.toolbar items]mutableCopy];
[items insertObject:barButtonItem atIndex:0];
[self.toolbar setItems:items animated:YES];
self.masterPopOverController = pc;}


-(void) splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem{

NSMutableArray *items = [[self.toolbar items]mutableCopy];
[items insertObject:barButtonItem atIndex:0];
[self.toolbar setItems:items animated:YES];
self.masterPopOverController = nil;}

ヘルプと迅速な回答をありがとう

4

3 に答える 3

2

XCodeプロジェクトナビゲータから...

  1. プロジェクトをクリックします
  2. 「ターゲット」の下にあるアプリ名をクリックします
  3. 右上の[概要]タブをクリックします
  4. 「 iPhone /iPodの展開情報」というラベルの付いたセクションを見て、「メインストーリーボード」を見つけます。リストボックスに メインストーリーボードに「MainStoryboard_iPad」のような文字が表示されている場合、これが問題です。

修正するには、ストーリーボードのiPhoneバージョンに変更してください。(例:「MainStoryboard_iPhone

なんで?

ユニバーサルアプリを作成すると、iPhoneとiPad両方の展開情報が作成されます。このエラーが発生した場合は、間違ったストーリーボードを使用するようにターゲットデプロイメントを構成している可能性があります。シミュレーターはそれがiPhoneであると見なすため、iPhoneデプロイメントを使用しますが、問題は、iPhoneデプロイメントがiPadストーリーボードを使用して初期化することを示し、iPadストーリーボードにiPhoneで実行できないUISplitViewControllerが含まれていることです-したがってエラーです。

于 2013-09-07T06:10:29.523 に答える
1

UISplitViewControllerは、iPad専用に作成されたコンポーネントであり、iPhone用には作成されていません。

アプリケーションはユニバーサルアプリケーションであるため、話している条件(「UIUserInterfaceIdiomPad」のもの)は、デバイスがiPadかiPhoneかをチェックします。したがって、それは必須です。

于 2012-12-14T13:51:44.820 に答える
0

UISplitViewControllerクラスを使用してこれを実現する方法はありません。Appleのリファレンスドキュメントを見ると、UISplitViewControllerがiPad固有のビューコントローラであることが明確に示されています。

于 2012-12-14T14:33:02.517 に答える