通过示例 UIAlertViewDelegate 了解协议实现

Posted

技术标签:

【中文标题】通过示例 UIAlertViewDelegate 了解协议实现【英文标题】:Understanding protocol implementation with example UIAlertViewDelegate 【发布时间】:2010-06-25 08:24:38 【问题描述】:

有两个类 A 和 B:

@interface A : NSObject ... @end

@接口 B ...

A 将通过创建 B 来使用 B 并使用它。

在 B 中,有机会创建 UIAlertViewDialog,并进行一些用户交互。

我认为在A类中实现clickedButtonAtIndex是合理的,因为A被声明为向UIAlertViewDelegate确认。但事实是我们应该在 B 中实现。

(void) alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex //bla bla

我真的不明白像这种情况下确认协议的真正原因是什么。

提前致谢。

【问题讨论】:

【参考方案1】:

在创建 UIAlertView 时,您可以定义委托类:

UIAlertView *alert = [[UIAlertView alloc]
          initWithTitle: title
          message: message
          delegate: delegate
          cancelButtonTitle: firstButtonName
          otherButtonTitles: nil];

因此,如果您在 B 类中创建 UIAlertView,但您想对 A 类中的按钮点击做出反应,则需要将上面代码中的委托设置为 A 类。

【讨论】:

如果您能接受答案(通过单击复选标记)如果它是您正在寻找的信息,那就太好了;)

以上是关于通过示例 UIAlertViewDelegate 了解协议实现的主要内容,如果未能解决你的问题,请参考以下文章

UIAlertViewDelegate 的 clickedButtonAtIndex 后崩溃,消息 [MPMoviePlayerViewController isKindOfClass:]: 消息发送

App Delegate 发出警告:“id <UIApplicationDelegate>”不符合“UIAlertViewDelegate”协议

我是符合 UIAlertViewDelegate 协议的 NSObject - 释放自己合适吗?

实现我自己的委托时未调用 UIAlertViewDelegate 方法 clickedButtonAtIndex

UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法

UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法