Objective c ';仅当在UIUserInterfaceIdiomPad';

Objective c ';仅当在UIUserInterfaceIdiomPad';,objective-c,xcode,Objective C,Xcode,当我尝试在我的IPad 6.0模拟器中使用我的应用程序时,每次都会遇到相同的问题*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“UIPLITVIEWCONTROLLER仅在UIUserInterfaceIdiomPad下运行时才受支持” * 我真的不知道为什么 -(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项 { if(UI\u USER\u INTERFACE\u IDI

当我尝试在我的IPad 6.0模拟器中使用我的应用程序时,每次都会遇到相同的问题*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“UIPLITVIEWCONTROLLER仅在UIUserInterfaceIdiomPad下运行时才受支持” *

我真的不知道为什么

-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项 { if(UI\u USER\u INTERFACE\u 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;}

感谢您的帮助和快速回答

UISplitViewController是一款仅为iPad而非iPhone制造的组件


由于您的应用程序是一个通用应用程序,因此您所说的条件(UIUserInterfaceIdiomPad)检查设备是iPad还是iPhone。因此它是必须的。

使用UISplitViewController类无法实现这一点。如果您查看文档,就会清楚地看到UISplitViewController是一个特定于iPad的viewcontroller。

来自XCode项目导航器

  • 点击你的项目
  • 单击位于“目标”下的应用程序名称
  • 单击右上角的“摘要”选项卡
  • 查看标有“iPhone/iPod部署信息”的部分,找到“主情节提要” 如果主情节提要在列表框中显示类似“MainstryBoard\ustrong>iPad”的内容,这就是问题所在
  • 要修复它,请将其更改为故事板的iPhone版本。(例如“主板iPhone”)

    为什么?

    创建通用应用程序时,它会为iPhone和iPad创建部署信息。
    如果您遇到此错误,您可能已将目标部署配置为使用错误的故事板。由于模拟器认为它是iPhone,所以它使用iPhone部署,但问题是iPhone部署说使用iPad情节提要进行初始化,而iPad情节提要包含一个不能在iPhone上运行的UISplitViewController,因此出现了错误。

    它是通用应用程序吗?是的,我理解。这就是我要说的,因为UISplitViewController无法在iPhone中运行,所以此检查验证您是否仅在iPad中运行代码\uu nsarray insertObject:atIndex::::对象不能为零'***第一次抛出调用堆栈: