2012-02-20 84 views
2

我有一个自定义的类为自定义塞格动画写。我正在尝试自定义动画轻击手势。在我的故事板中,我有一个导航控制器,主视图,然后是其他两个视图。我已经将手势连接到另一个视图,并且定义了要使用的segue的自定义类,但是我得到下面的错误。我有另一个使用Push的segue,可以正常工作。任何想法做什么即时错误?自定义塞格动画不工作

这是我的课:

- (void) perform { 

    UIViewController *src = (UIViewController *) self.sourceViewController; 
    UIViewController *dst = (UIViewController *) self.destinationViewController; 

    [UIView transitionWithView:src.navigationController.view duration:0.8 
         options:UIViewAnimationOptionTransitionFlipFromBottom 
        animations:^{ 
         [src.navigationController pushViewController:dst animated:NO]; 
        } 
        completion:NULL]; 

} 

错误:

2012-02-20 16:04:45.889 IdeaStarters[2755:fe03] -[__NSCFDictionary setView:]: unrecognized selector sent to instance 0x6a40010 
2012-02-20 16:04:45.891 IdeaStarters[2755:fe03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary setView:]: unrecognized selector sent to instance 0x6a40010' 
*** First throw call stack: 
(0x13ba052 0x154bd0a 0x13bbced 0x1320f00 0x1320ce2 0x4fc3e 0x922f40 0x922eeb 0x50268 0x93dd60 0x3f8c54 0x3f8c8f 0x13bbe1a 0x1325821 0x22f46e 0xd6e2c 0xd73a9 0xd75cb 0xd7941 0xe947d 0xe966f 0xe993b 0xea3df 0xea561 0x2064ca 0x50301 0x13bbe72 0x1d6492d 0x1d6e827 0x1cf4fa7 0x1cf6ea6 0x1cf6580 0x138e9ce 0x1325670 0x12f14f6 0x12f0db4 0x12f0ccb 0x12a3879 0x12a393e 0x11a9b 0x2abd 0x2a25 0x1) 
terminate called throwing an exception(lldb) 
+0

看起来像我的代码:)请发表您的完整的.h和.m文件。这对我来说很好。我们需要弄清楚你可能做什么不同。错误消息中的setView与您的视图控制器中的其他内容有关吗? – 2012-02-20 22:18:15

+0

我假设你在故事板seque中定义了seque的类和样式。之后,我可能只是检查一下,看看我是否可以直接过渡到其他视图w /执行segue与标识符只是为了确保您可以打它。 – DJPlayer 2012-02-20 23:24:11

+0

原来,viewcontroller是腐败或什么的,我重新创建了整个视图,现在一切正常。我不知道是什么导致了这一点,但一切都与我的其他seques完全一样,并且工作正常。 – atrljoe 2012-02-20 23:45:37

回答

1

您可能会发现它有助于总是设置这种象征性的断点。

https://github.com/brennanMKE/Interfaces/blob/master/NSAssertBreakpoint.png

该断点会自动停止调试并给你一个机会去回调用堆栈,看问题开始的地方。

我经常在调用任何东西前使用NSAssert来验证状态。

NSAssert([segue.destinationViewController isKindOfClass:[ABExpectedClass class]], @"Destination VC must be ABExpectedClass"); 

我记得有这样一个问题,但它试图调用选择是没有从内部在我的代码,通常调用一个零值的东西不应该是一个问题。我只是在做错事,我用的断言帮助我纠正了逻辑。

试试看看GitHub上的其他自定义细节。有许多可以用作参考。

https://github.com/search?q=UIStoryboardSegue&ref=commandbar