2009-04-07 113 views
5

添加:(id)发件人后,我收到了此例程的崩溃,因此我可以确定哪个按钮调用了它。当设置为普通旧版toggleView3时,它可以很好地工作。当detailView切换回docView时发生崩溃。NSInvalidArgumentException

'NSInvalidArgumentException', reason: '*** -[RootViewController toggleView3]: unrecognized selector sent to instance 0x524a00' 2009-04-07 12:29:44.421 eTarot[11405:20b] Stack:

-(IBAction)toggleView3:(id)sender{ 


    if (detailViewController == nil) { 
     [self loadDetailViewController]; 
    } 

    UIView *docView = docViewController.view; 
    UIView *detailView = detailViewController.view; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1]; 
    [UIView setAnimationTransition:([docView superview] ? UIViewAnimationTransitionFlipFromRight : UIViewAnimationTransitionFlipFromLeft) forView:self.view cache:YES]; 

    if ([docView superview] != nil) { 
     [detailViewController viewWillAppear:YES]; 
     [docViewController viewWillDisappear:YES]; 
     [docView removeFromSuperview]; 

     [self.view addSubview:detailView]; 
     [self.view insertSubview:detailNavigationBar aboveSubview:detailView]; 
     [docViewController viewDidDisappear:YES]; 
     [detailViewController viewDidAppear:YES]; 

    } else { 
     [docViewController viewWillAppear:YES]; 
     [detailViewController viewWillDisappear:YES]; 
     [detailView removeFromSuperview]; 
     [detailNavigationBar removeFromSuperview]; 
     [self.view addSubview:docView]; 
     [detailViewController viewDidDisappear:YES]; 
     [docViewController viewDidAppear:YES]; 
    } 
    [UIView commitAnimations]; 
} 
+0

你可以发布调用toggleView3的代码吗? – cobbal 2009-04-07 17:24:20

回答

13

当正确的选择器名称是toggleView3: - 即冒号和参数时,您正在发送视图toggleView3。它们可能看起来与你类似,但它们与Objective-C完全不同。

+0

谢谢Chuck。很明显,一旦它指出:) – Alan 2009-04-07 17:44:20

2

这异常意味着您的应用程序而无需调用toggleView3:发件人的说法地方。由于您的新方法需要参数,因此与调用从未存在的方法相同。

如果您在调试器中查看堆栈跟踪,应该很清楚它来自哪里。构建结果中也可能有警告。

相关问题