UIAlertView委托方法崩溃

时间:2012-06-06 11:11:28

标签: iphone delegates uialertview presentmodalviewcontroller

在我的iPhone应用中,我有一个NSObject A类和一个UIViewController B类。我想从A调用B类中的实例方法。我使用以下代码。

Bclass *vc = [[Bclass alloc]init];
[vc hideAlert:NSString];
[vc release];

和B班:

- (void)hideAlert:(NSString*)message{
    UIAlertView *shareAlrt = [[UIAlertView alloc] initWithTitle:@""
                                                        message:message
                                                       delegate:self
                                              cancelButtonTitle:@"Ok"
                                              otherButtonTitles:nil];
    [shareAlrt show];
    [shareAlrt release];
}

并调用该方法并显示AlertView。单击“确定”按钮时,我想导航到类Cclass。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0)
    {
        Cclass *vc = [[Cclass alloc]initWithNibName:@"Cclass" bundle:[NSBundle mainBundle]];
        [self presentModalViewController:vc animated:NO];
        [vc release];
    }
}

但是当我点击“确定”按钮时,应用程序崩溃了。这里发生了什么事?我在B class.h文件中添加了<UIAlertViewDelegate>,但仍然是同样的错误。请帮忙

我收到错误代码*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType alertView:clickedButtonAtIndex:]: unrecognized selector sent to instance 0x81baa80'

2 个答案:

答案 0 :(得分:0)

只需更改方法

即可
- (void)hideAlert:(NSString*)message{
    UIAlertView *shareAlrt = [[UIAlertView alloc] initWithTitle:@""
                                                    message:message
                                                   delegate:self
                                          cancelButtonTitle:nil
                                          otherButtonTitles:@"Ok",nil];
    [shareAlrt show];
    [shareAlrt release];
}

答案 1 :(得分:-1)

这可以通过假设除了取消按钮标题为“OK”之外没有其他按钮来回答。通过查看显示的代码来进行假设。

您已使用取消按钮,您无法处理委托以执行任何操作。

如果您查看 UIAlertViewDelegate类参考文档

的文档
  

或者,您可以实现alertViewCancel:方法来获取   系统取消警报视图时的适当操作。如果   delegate没有实现此方法,默认行为是   模拟用户单击取消按钮并关闭视图。