Iphone 委托方法抛出运行时“;“无法识别的选择器”;从一个UIViewController切换回主视图控制器时出错

Iphone 委托方法抛出运行时“;“无法识别的选择器”;从一个UIViewController切换回主视图控制器时出错,iphone,uiviewcontroller,interface-builder,Iphone,Uiviewcontroller,Interface Builder,好吧,我花了半天的时间在这上面,我都快死了 因此,我有3个视图控制器相互转换,如下所示: 销毁前一个视图控制器后,我调用UploadDecisionViewController: [self dismissModalViewControllerAnimated:YES]; [self performSelector:@selector(showUDModalView) withObject:nil afterDelay:0.5]; 在我的showUDModalView方法中: - (void)

好吧,我花了半天的时间在这上面,我都快死了

因此,我有3个视图控制器相互转换,如下所示:

销毁前一个视图控制器后,我调用UploadDecisionViewController:

[self dismissModalViewControllerAnimated:YES];
[self performSelector:@selector(showUDModalView) withObject:nil afterDelay:0.5];
在我的showUDModalView方法中:

- (void)showUDModalView
{
    UploadDecisionViewController *udcontroller = [[UploadDecisionViewController alloc] initWithNibName:@"UploadDecisionViewController" bundle:nil];
    udcontroller.delegate = self;

    [self presentModalViewController:udcontroller animated:YES];
    [udcontroller release];

}
UploadDecisionViewController显示没有问题。UploadDecisionViewController有一个按钮,单击该按钮时,我希望它转换为FileUploadViewController。我设置了一个UploadDecisionDelegate,在其中抛出了一个方法来处理按钮单击:

内部UploadDecisionDelegate协议(UploadDecisionViewController.h):

然后在我的iAction方法中,当单击按钮时,我有以下内容:

- (IBAction)decisionSelected:(id)sender
{

    [delegate UploadDecisionViewController:self madeChoice:@"upload"];//crashing at this line

}
当我运行它时,在上面的这一行,它会抛出一个运行时异常:

2010-06-09 12:48:59.561 UOnlive[4735:207] *** -[UIView UploadDecisionViewController:madeChoice:]: unrecognized selector sent to instance 0x3b65420
2010-06-09 12:48:59.562 UOnlive[4735:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIView UploadDecisionViewController:madeChoice:]: unrecognized selector sent to instance 0x3b65420'
2010-06-09 12:48:59.563 UOnlive[4735:207] Stack: (
    33502299,
    2495698185,
    33884219,
    33453686,
    33306306,
    20618,
    2982917,
    3390286,
    3399023,
    3394235,
    3087839,
    2996168,
    3022945,
    40156505,
    33287040,
    33283144,
    40150549,
    40150746,
    3026863,
    11700,
    11554
)
让我来介绍一下实现的委托方法:

- (void)UploadDecisionViewController:(UploadDecisionViewController *)controller madeChoice:(NSString *)whichDirection
{
    NSLog(@"it got to here 245");
    [self dismissModalViewControllerAnimated:YES];
    if (yesOrNo) {
        //open up the FileUploadViewController and proceed to upload
        [self performSelector:@selector(showFUModalView) withObject:nil afterDelay:0.5];

    }
}

谁能告诉我到底发生了什么事?感谢大家的帮助……

您的代码太长了,我不想再重复一遍,只是一个建议,如果您的对象可以/不能使用这种语句执行选择器,您可以使用c:

if([myObj respondsToSelector:@selector(myFunc)])
{
 //do something
}
else{
//do something else
}

错误表明您正试图调用
UIView
上的
UploadDecisionViewController
方法

我敢打赌,您为代理设置了一些视图,而不是视图控制器

showUDModalView
方法位于何处?

也许您可以在其他地方设置代理?

对不起,我只是想说得全面一些。简而言之,在链接按钮以调用另一个viewcontroller的方法中,如果我想通过调用委托函数将控件返回到主视图控制器,则会引发错误,但在该调用中出错。希望这能说明问题。是的,那是我的问题。感谢帮助:)我将委托设置为nibs中的视图…:)
if([myObj respondsToSelector:@selector(myFunc)])
{
 //do something
}
else{
//do something else
}