2011-03-05 72 views
1

我在uialert视图中出现了一个奇怪的问题。UIALERTVIEW目标问题c

我有几个警报是在我的.m文件在我的.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; 

成员变量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 
} 

这里是我如何初始化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]; 

当我点击它运行的委托方法注销按钮的样本,但它警告匹配ordercashalert或receivecashalert.i我不知道为什么。它应该实际上与注销警报匹配。我处于交付产品的最后阶段,突然间我有这个bug。有人能帮助我吗。

+0

把代码放在初始化它们的地方...... – 2011-03-05 05:21:56

+0

@mehta我编辑了我的文章,我不认为我们可以把代码放在我正在初始化uialertview,因为我们不知道用户将点击哪个按钮索引。还有什么想法? – Rajashekar 2011-03-05 05:39:34

回答

5

我建议你使用标记和枚举技巧。首先 - 所有可能的警报创建枚举:

enum { 
    RSChangePasswordAlertTag, 
    RSDeleteAlertTag, 
    .... 
    ReceiveCashAlertTag 
}; 

然后创建警报后,就分配适当的标签给它

UIAlertView *myAlert = [[[UIAlertView alloc] initWithTitle:....] autorelease]; 
[myAlert setTag:RSDeleteAlertTag]; 
[myAlert show]; 

然后在委托方法使用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 
    } 
} 

这样你就只会比较整数而不是指针,而且你的代码会比较干净,少一些实例变量。

+0

感谢哥们,我会试试这个,明天让你知道。 – Rajashekar 2011-03-05 06:39:38

+0

感谢您的提示好友似乎正在工作 – Rajashekar 2011-03-06 06:49:16