我是否需要添加<uialertviewdelegate>协议?</uialertviewdelegate>

时间:2010-04-23 15:18:18

标签: iphone objective-c cocoa-touch

我添加了一个alertView来向用户显示警告消息(见下文)

-(void)connectionAlert {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"UIAlertView" 
             message:@"<Alert message>"
               delegate:self 
            cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [alert show];
    [alert release];
}

然后我使用[self connectionAlert];从我的viewController调用一切正常,但我不确定是否应该将<UIAlertViewDelegate>协议添加到我的viewController接口。

目前我已经 NOT 添加了协议,一切似乎都在工作,这是因为我通过自己调用UIAlertView吗?我真的应该加入协议吗?

非常感谢

加里

4 个答案:

答案 0 :(得分:3)

我从来没有亲自添加UIAlertViewDelegate协议,所以我不明白你为什么要这么做。

如果您希望访问以下方法,则只需要协议:

回应行动

– alertView:clickedButtonAtIndex:

自定义行为

– willPresentAlertView:
– didPresentAlertView:
– alertView:willDismissWithButtonIndex:
– alertView:didDismissWithButtonIndex:

<强>取消

– alertViewCancel:

如果您不想收听这些通知,则不需要协议。

答案 1 :(得分:1)

1.如果您想在.m文件中使用任何UIalertView委托方法,那么您应该将UIAlertViewDelegate添加到您的界面。 2.既然你没有在你的接口文件中添加UIAlertViewDelegate,我认为你没有使用过任何一个alertView Delegate方法。在这种情况下,您无需将委托设置为self。如果您不想使用任何委托方法,则委托可以为nil。

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"UIAlertView" 
         message:@"<Alert message>"
           delegate:nil 
        cancelButtonTitle:@"OK" otherButtonTitles: nil];

答案 2 :(得分:0)

是的它有效,是的你应该添加协议。

这很有效,因为这就是Objective C的工作原理。您可以向任何对象发送任何消息,当然,您发送消息的对象可能无法理解。

确实,这就是应该添加协议的原因。你告诉编译器你计划实现代码 - 如果你很幸运 - 它会告诉你你是否偶然错过了什么。在编译时错过一个方法而不是在运行时,几乎总是更好。

答案 3 :(得分:-1)

是的,你应该。它可以在没有它的情况下工作,但你需要这样做,因为你设置了委托对象。也许你想实现一些委托方法。如果不这样做,则将委托设置为nil。