单击蓝色或红色单元格时崩溃

时间:2013-05-31 01:14:39

标签: ios uigesturerecognizer

在使用SWReveallViewController获取Facebook应用程序等滑出式菜单时,请从github John-Lluch / SWRevealViewController下载,参考

SWRevealViewController / RevealControllerStoryboardExample /

我刚从

更改了ViewDidLoadcolorViewController.m的代码
[self.navigationController.navigationBar addGestureRecognizer: self.revealViewController.panGestureRecognizer];

[self.view addGestureRecognizer: self.revealViewController.panGestureRecognizer];

然后运行它,当后视图显示并且蓝色单元格被点击时,它也会崩溃,红色单元格。

调试说:

RevealControllerStoryboardExample[2244:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

发生什么事了?我在这个样本中没有触及任何其他内容,但是如上所述稍微改变一下。我的目的是能够平移视图中的任何位置,而不仅仅是在导航栏上平移。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

问题是self.revealViewController是nil ...之前没有崩溃的原因是self.navigationController nil,所以原始代码尝试的消息发送(通常会抛出相同的nil参数异常)从未实际发送过。

答案 1 :(得分:0)

对于读这篇文章的其他人来说:

如果您正在实现SWRevealViewController + Storyboards,并且如果您正确选择了自定义“显示视图控制器”segue,那么您还必须从prepareForSegue调用SWRevealViewControllerSegue类。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue isKindOfClass: [SWRevealViewControllerSegue class]]) {

        SWRevealViewControllerSegue* rvcs = (SWRevealViewControllerSegue*) segue;

        SWRevealViewController* rvc = self.revealViewController;

        rvcs.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {

        UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:dvc];

        [rvc setFrontViewController:nc animated:YES];

       };
    }
}