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 和更多警报窗口的主要内容,如果未能解决你的问题,请参考以下文章
通过示例 UIAlertViewDelegate 了解协议实现
UIAlertViewDelegate 的 clickedButtonAtIndex 后崩溃,消息 [MPMoviePlayerViewController isKindOfClass:]: 消息发送
App Delegate 发出警告:“id <UIApplicationDelegate>”不符合“UIAlertViewDelegate”协议