使用SWRevealViewController在performSegueWithIdentifier期间发送“无法识别的选择器发送到实例”错误

时间:2015-10-07 22:28:01

标签: ios objective-c storyboard segue

我是iOS开发的新手,我正在使用John Lluch着名的SWRevealViewController实现滑出式菜单。我正在关注这个视频教程:

https://www.youtube.com/watch?v=5SUV1YY2yxQ

到目前为止,我有这个故事板:

enter image description here

初始场景(Reveal View Controller)正在尝试自动触发前两个segues(到表视图和导航控制器)。

当我构建应用程序时,我收到以下错误:

[SWRevealViewController initWithIdentifier:source:destination:]:无法识别的选择器发送到实例0x7d96f000

这个错误出现在我在下面的'loadStoryboardControllers'方法中,在SWRevealViewController.m(这是故事板上我最初的'RevealViewController'场景的类)中的行上。

- (void)loadStoryboardControllers
{
    if ( self.storyboard && _rearViewController == nil )
    {
        //Try each segue separately so it doesn't break prematurely if either Rear or Right views are not used.
        @try
        {
            //**ERROR OCCURS ON FOLLOWING LINE**
            [self performSegueWithIdentifier:SWSegueRearIdentifier sender:nil];
        }
        @catch(NSException *exception) {}

        @try
        {
            //**ANOTHER ALMOST IDENTICAL ERROR OCCURS ON FOLLOWING LINE**
            [self performSegueWithIdentifier:SWSegueFrontIdentifier sender:nil];
        }
        @catch(NSException *exception) {}

        @try
        {
            [self performSegueWithIdentifier:SWSegueRightIdentifier sender:nil];
        }
        @catch(NSException *exception) {}
    }
}

发生错误时,'SWSegueRearIdentifier'的值为@“sw_rear”,这是正确的。这是我给segue的标识符。 SWRevealViewController的工作方式是首先查找标识为“sw_rear”的segue,以便自动触发它。

可能导致错误的原因,或者我可以做些什么来进一步调试?

1 个答案:

答案 0 :(得分:4)

initWithIdentifier:source:destination:是由UIStoryboardSegue类实现的方法。它在segue操作期间被调用。

在这种情况下,它是针对UIViewController子类调用的,导致异常。

在InterfaceBuilder中确保Segue的自定义类是有效的UIStoryboardSegue子类 - 对于SWRevealController,它应该是SWRevealViewControllerSegueSetController