0

在使用 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'

发生了什么?在这个示例中我没有触及任何其他内容,但与上面一样进行了一些更改。我的意图是能够平移视图中的任何位置,而不仅仅是在导航栏上平移。

谁能帮我解决这个问题?

4

2 回答 2

0

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

于 2013-05-31T01:55:07.767 回答
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];

       };
    }
}
于 2013-10-28T08:37:31.860 回答