'只有在UIUserInterfaceIdiomPad下运行时才支持UISplitViewController'

时间:2012-12-14 13:46:13

标签: objective-c xcode

当我尝试在我的IPad 6.0模拟器中午餐时遇到问题我每次都遇到同样的问题* 由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'只有在UIUserInterfaceIdiomPad下运行时才支持UISplitViewController “ *

我真的不知道为什么

  

- (BOOL)应用程序:(UIApplication *)应用程序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;}

感谢您的帮助和快速解答

3 个答案:

答案 0 :(得分:2)

来自XCode项目导航器......

  1. 点击您的项目
  2. 点击位于“目标”
  3. 下的应用名称
  4. 点击右上角的“摘要”标签
  5. 查看标有“iPhone / iPod部署信息”的部分,找到“主要故事板” 如果主要故事板在列表框中显示“MainStoryboard_ iPad ”之类的内容,那就是问题。
  6. 要修复此问题,请将其更改为故事板的 iPhone 版本。 (例如“MainStoryboard_ iPhone ”)

    <强>为什么吗

    创建通用应用时,会为iPhone iPad 创建部署信息。 如果您遇到此错误,则可能已将目标部署配置为使用错误的故事板。由于模拟器认为它是iPhone,它使用iPhone部署,但问题是iPhone部署使用iPad故事板进行初始化,而iPad故事板包含 UISplitViewController ,无法在iPhone上运行 - 因此错误。

答案 1 :(得分:1)

UISplitViewController是仅为iPad而非iPhone制作的组件。

由于您的应用程序是通用应用程序,因此您正在谈论的条件(“UIUserInterfaceIdiomPad”)检查设备是iPad还是iPhone。因此必须。

答案 2 :(得分:0)

使用UISplitViewController类无法实现此目的。如果您查看Apple reference文档,它会清楚地说明UISplitViewController是一个特定于iPad的视图控制器。