【问题标题】:UIAlertViewDelegate and more Alert windowsUIAlertViewDelegate 和更多警报窗口
【发布时间】:2010-12-03 14:21:03
【问题描述】:
我有实现 UIAlertViewDelegate 的控制器。在实施中,我有:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
方法。当我创建 UIAlertView 时,我将“委托”设置为“自我”,它工作正常。但问题是现在我有了更多的警报视图,并且我希望它们中的每一个都有不同的行为。那么如何查看是哪个 alertView 发送消息呢?
【问题讨论】:
标签:
iphone
objective-c
uialertview
【解决方案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 是一个标签属性。在创建时设置它,您可以在委托中检查标签。