【问题标题】:'UISplitViewController is only supported when running under UIUserInterfaceIdiomPad''只有在 UIUserInterfaceIdiomPad 下运行时才支持 UISplitViewController'
【发布时间】:2012-12-02 12:36:26
【问题描述】:

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

我真的不知道为什么

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 如果(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad){ UISplitViewController spvc = (UISplitViewController) self.window.rootViewController; spvc.delegate = [spvc.viewControllers lastObject]; } 返回是; }

这里怎么可能出错/或者在哪里

- (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;}

感谢您的帮助和快速解答

【问题讨论】:

  • 它是通用应用程序吗?

标签: objective-c xcode


【解决方案1】:

UISplitViewController 是一个仅适用于 iPad 而不是 iPhone 的组件。

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

【讨论】:

  • 是的,我明白了。这就是我要说的,因为 UISplitViewController 不能在 iPhone 上运行,所以这个检查验证你只在 iPad 上运行你的代码
  • __NSArrayM insertObject:atIndex:]: object cannot be nil' *** First throw call stack:
【解决方案2】:

您无法使用 UISplitViewController 类来实现这一点。如果您查看Apple reference 文档,它清楚地表明 UISplitViewController 是 iPad 特定的视图控制器。

【讨论】:

    【解决方案3】:

    来自 XCode 项目导航器...

    1. 点击您的项目
    2. 点击“目标”下的应用名称
    3. 点击右上角的“摘要”标签
    4. 查看标有 “iPhone/iPod 部署信息” 的部分并找到 “主情节提要” 如果主故事板在列表框中显示类似“MainStoryboard_iPad”的内容,这就是问题所在。

    要修复它,请将其更改为您的情节提要的 iPhone 版本。 (例如“MainStoryboard_iPhone”)

    为什么?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      相关资源
      最近更新 更多