Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UISplitViewController:在iphone6plus上旋转时崩溃_Ios_Xcode_Uinavigationcontroller_Uistoryboard_Uisplitviewcontroller - Fatal编程技术网

Ios UISplitViewController:在iphone6plus上旋转时崩溃

Ios UISplitViewController:在iphone6plus上旋转时崩溃,ios,xcode,uinavigationcontroller,uistoryboard,uisplitviewcontroller,Ios,Xcode,Uinavigationcontroller,Uistoryboard,Uisplitviewcontroller,我在iOS 8上使用UISplitViewController时遇到问题 具体来说,它在旋转屏幕时会崩溃,而这只发生在iPhone 6 Plus上。我假设当控制器尝试拆分/合并视图控制器时会发生这种情况 我的导航堆栈可能有点复杂,拆分视图的左侧和右侧都有一个UINavigationController。在切换到右堆栈之前,可以在左堆栈上推送多个项目。它与默认的邮件应用程序非常相似。在选择邮箱的位置,打开文件夹并浏览左侧堆栈上的邮件列表,在右侧堆栈上显示邮件和打开的附件等 通过使用Show(例如P

我在iOS 8上使用UISplitViewController时遇到问题

具体来说,它在旋转屏幕时会崩溃,而这只发生在iPhone 6 Plus上。我假设当控制器尝试拆分/合并视图控制器时会发生这种情况

我的导航堆栈可能有点复杂,拆分视图的左侧和右侧都有一个UINavigationController。在切换到右堆栈之前,可以在左堆栈上推送多个项目。它与默认的邮件应用程序非常相似。在选择邮箱的位置,打开文件夹并浏览左侧堆栈上的邮件列表,在右侧堆栈上显示邮件和打开的附件等

通过使用
Show(例如Push)
推左侧堆栈和
Show Detail(例如Replace)
,我可以配置和连接不同视图的行为,而只需使用故事板配置

在点击周围(并填充右侧堆栈)后,在iphone 6 plus上旋转会使应用程序崩溃。我意识到这种情况的发生是因为这是唯一一个将两边互相膨胀和折叠的装置。调试器没有给出真实的信息,我有时得到的唯一信息是:

-[UIView updateNavigationBarButtonsAnimated:]:无法识别的选择器发送到实例

请注意,其中显示的是
UIView
,这似乎是随机的(NFCString、NSArray等),因此我认为它意外为零,并指向堆上的随机代码


我也意识到这与
UISplitViewControllerDelegate
方法有关,但我只是不知道我应该做些什么才能让它工作

“我也意识到这与UISplitViewControllerDelegate方法有关,但我就是不知道该怎么做才能让它工作。”

你说得对。我也有同样的问题,并解决了这个问题:

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    if (self.isMovingFromParentViewController) {
        // To avoid deallocated problem with SplitVC delegates
        self.splitViewController.delegate = nil;
        // Do your stuff here
    }
}
换句话说,当屏幕消失时,必须将splitViewController的委托分配给nil

我希望这对你和我都有帮助。

我也有同样的问题。
我的崩溃是由于在UISplitViewController的子类的viewDidLoad中设置leftBarButtonItem引起的。我删除了这两行代码

let navigationController = self.viewControllers[self.viewControllers.count-1] as! UINavigationController
navigationController.topViewController.navigationItem.leftBarButtonItem = displayModeButtonItem()

现在,我在Prepareforsgue中设置LeftBarbuttonite。苹果在主/细节示例中就是这样做的;-)

这是因为在Swift中使用
assign
(或
unowned(unsafe)
)而不是
weak
)存储代理。这意味着您有责任在解除分配时将其设置为
nil
?它只是在旋转?实际上,只是在旋转。我从来没有从屏幕上删除过uisplitviewcontroller。添加了它,并没有造成什么不同。不幸的是,听到这个消息我很难过(