Raj*_*kar 1 iphone objective-c uialertview
我对uialert观点有一个奇怪的问题.
我有几个警报是我的.h文件中的成员变量
UIAlertView *changepwalert; //change password alert.
UIAlertView *delallalert; //delete selected transactions.
UIAlertView *logout; //logout alert.
UIAlertView *closingbalancealert; //closing balance alert.
UIAlertView *totalreportalert; //total report alert.
UIAlertView *ordercashalert; //order cash alert.
UIAlertView *unlockingalert; //unlocking alert.
UIAlertView *receivecashalert;
Run Code Online (Sandbox Code Playgroud)
在我的.m文件中,我有以下didDismissWithButtonIndex委托方法.
if(alertView==unlockingalert && buttonIndex==0)
{
//code
}
else if(alertView==ordercashalert && buttonIndex==0)
{
//code
}
else if(alertView==receivecashalert && buttonIndex==0)
{
//code
}
else if (alertView==logout && buttonIndex == 0)
{
//code
}
else if(alertView==closingbalancealert && buttonIndex==0)
{
//code
}
else if (alertView==changepwalert && buttonIndex==0)
{
//code
}
else if(alertView==delallalert && buttonIndex==0)
{
//code
}
Run Code Online (Sandbox Code Playgroud)
以下是我如何初始化uialertview的示例
ordercashalert = [[UIAlertView alloc] initWithTitle:nil message:@"Enter Password\n\n\n\n\n\n" delegate:self
cancelButtonTitle:@"Ok" otherButtonTitles:@"Cancel",nil];
logout = [[UIAlertView alloc] initWithTitle:@"Logout" message:@"Are You Sure?" delegate:self cancelButtonTitle:@"YES" otherButtonTitles:@"NO",nil];
[logout show];
[logout release];
Run Code Online (Sandbox Code Playgroud)
当我点击退出按钮时,它会运行委托方法,但它会将警报与ordercashalert或receivecashalert匹配.我不知道为什么.它实际上应该与注销警报匹配.我正处于交付产品的最后阶段,突然间我有这个错误.有谁可以帮助我吗.
我建议你使用标签和枚举技巧.首先 - 为所有可能的警报创建枚举:
enum {
RSChangePasswordAlertTag,
RSDeleteAlertTag,
....
ReceiveCashAlertTag
};
Run Code Online (Sandbox Code Playgroud)
然后在创建警报时,只需为其分配适当的标记
UIAlertView *myAlert = [[[UIAlertView alloc] initWithTitle:....] autorelease];
[myAlert setTag:RSDeleteAlertTag];
[myAlert show];
Run Code Online (Sandbox Code Playgroud)
然后在委托方法中使用's标签的switch语句alertView:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSUInteger)buttonIndex {
switch (alertView.tag) {
case RSPasswordAlertTag: {
// Do password alert thing
break;
}
case RSDeleteAlertTag: {
// do delete thing
break;
}
.... // here be other cases
}
}
Run Code Online (Sandbox Code Playgroud)
这样你只需要比较整数而不是指针,你的代码将更清晰,实例变量更少.