我有两个带有确定/取消按钮的 UIAlertView。
我通过以下方式捕获用户响应:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
我遇到的问题是,当前打开了哪个 alertView?
在每一个上单击确定/取消时,我有不同的操作要做......
我有两个带有确定/取消按钮的 UIAlertView。
我通过以下方式捕获用户响应:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
我遇到的问题是,当前打开了哪个 alertView?
在每一个上单击确定/取消时,我有不同的操作要做......
你有几个选择:
使用 ivars。创建警报视图时:
myFirstAlertView = [[UIAlertView alloc] initWith...];
[myFirstAlertView show];
// similarly for the other alert view(s).
在委托方法中:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (alertView == myFirstAlertView) {
// do something.
} else if (alertView == mySecondAlertView) {
// do something else.
}
}
使用 的tag
属性UIView
:
#define kFirstAlertViewTag 1
#define kSecondAlertViewTag 2
UIAlertView *firstAlertView = [[UIAlertView alloc] initWith...];
firstAlertView.tag = kFirstAlertViewTag;
[firstAlertView show];
// similarly for the other alert view(s).
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
switch (alertView.tag) {
case kFirstAlertViewTag:
// do something;
break;
case kSecondAlertViewTag:
// do something else
break;
}
}
子类化UIAlertView
并添加一个userInfo
属性。通过这种方式,您可以向警报视图添加标识符。
@interface MyAlertView : UIAlertView
@property (nonatomic) id userInfo;
@end
myFirstAlertView = [[MyAlertView alloc] initWith...];
myFirstAlertView.userInfo = firstUserInfo;
[myFirstAlertView show];
// similarly for the other alert view(s).
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (alertView.userInfo == firstUserInfo) {
// do something.
} else if (alertView.userInfo == secondUserInfo) {
// do something else.
}
}
UIAlertView
是一个UIView
子类,因此您可以使用它的tag
属性进行标识。因此,当您创建警报视图时,设置其标记值,然后您将能够执行以下操作:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
if (alertView.tag == kFirstAlertTag){
// First alert
}
if (alertView.tag == kSecondAlertTag){
// First alert
}
}