UIAlertViewDelegate 和更多警报窗口

Posted

技术标签:

【中文标题】UIAlertViewDelegate 和更多警报窗口【英文标题】:UIAlertViewDelegate and more Alert windows 【发布时间】:2010-12-03 14:21:03 【问题描述】:

我有实现 UIAlertViewDelegate 的控制器。在实施中,我有:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

方法。当我创建 UIAlertView 时,我将“委托”设置为“自我”,它工作正常。但问题是现在我有了更多的警报视图,并且我希望它们中的每一个都有不同的行为。那么如何查看是哪个 alertView 发送消息呢?

【问题讨论】:

【参考方案1】:

UIAlertView 是 UIView 的子类,因此有标签属性可以用来区分它们:

UIAlertView *alert1 = ... //Create alert
alert1.tag = kActionTag1;
//show alert

...

UIAlertView *alert2 = ... //Create alert
alert2.tag = kActionTag2;
//show alert

然后在委托方法中:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
     if (alertView.tag == kActionTag1)
          // Perform 1st action
     
     if (alertView.tag == kActionTag1)
          // Perform 2nd action
     

【讨论】:

【参考方案2】:

指向每个特定警报视图的指针在委托方法的 alertView 参数中发送。您只需要跟踪指针(例如通过实例变量),以便知道哪个是哪个并相应地采取行动。

【讨论】:

【参考方案3】:

UIAlertView 是一个标签属性。在创建时设置它,您可以在委托中检查标签。

【讨论】:

以上是关于UIAlertViewDelegate 和更多警报窗口的主要内容,如果未能解决你的问题,请参考以下文章

阻止 UIAlertView 关闭

通过示例 UIAlertViewDelegate 了解协议实现

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

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

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

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