有两个A和B类:
@interface A:NSObject< UIAlertViewDelegate> {...} @end
@interface B {...}
A将通过创建B使用B并使用它。
在B中,有机会创建UIAlertViewDialog,并进行一些用户交互。
我认为在A类中实现clickedButtonAtIndex是合理的,因为A被声明为向UIAlertViewDelegate确认。但事实是我们应该在B中实施。
- (void)alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex {// bla bla}
我真的无法理解像这种情况确认协议的真正原因是什么。
提前致谢。
答案 0 :(得分:1)
创建UIAlertView时,您可以定义委托类:
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: title
message: message
delegate: delegate
cancelButtonTitle: firstButtonName
otherButtonTitles: nil];
因此,如果您在B类中创建UIAlertView,但是您想对A类中的按钮点击做出反应,则需要将上面代码中的委托设置为A类。