我的应用中有3个提醒视图。 'wonAlert' 'lostAlert' 'nagAlert'
我实现这个来给他们行动。
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
这曾经工作得很好,当我只有'wonAlert'和'lostAlert'时,他们有一个解雇和一个学习更多按钮,将他们带到维基百科, 现在我想要nag警报将它们带到应用程序商店。
我怎样才能这样做,以便上述方法知道水龙头来自哪个警报视图,或类似的东西?
干杯,山姆
答案 0 :(得分:6)
听起来你已经在变量中获得了UIAlertViews,所以我会使用它们:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (alertView == wonAlert) {
//DO STUFF
}
else if (alertView == lostAlert) {
//DO OTHER STUFF
}
else if (alertView == nagAlert) {
//OPEN APP STORE
}
}
多个视图可以使用相同的标记,您可以轻松输错标题或更改标题,忘记更新委托方法。
答案 1 :(得分:1)
在视图控制器头文件中,添加<UIAlertViewDelegate>
,以便它同意处理UIAlertView
委托方法:
@interface MyViewController : UIViewController <UIAlertViewDelegate> { ... }
在视图控制器的实现中,添加以下委托方法:
- (void) alertView:(UIAlertView *)_actionSheet clickedButtonAtIndex:(NSInteger)_buttonIndex {
if ([_actionSheet.title isEqualToString:@"titleOfMyAlertView"]) {
if (_buttonIndex == 0) {
// do stuff for first button
}
else if (_buttonIndex == 1) {
// do something for second button
}
// etc. if needed
}
}
_actionSheet.title
属性可用于区分警报视图。我的建议是使用NSString
常量或NSLocalizedString()
,如果您有本地化的字符串表,则标题您的警报视图。
答案 2 :(得分:1)
我在这里回答了类似的问题: Alert with 2 buttons
正确的方法是使用警报的标签属性
创建每个警报后,通过添加:
设置其标记变量alertName.tag = #; //ex: alertName.tag = 1
然后,在clickedButtonAtIndex方法中,您需要为每个警报添加一个“if”块,如下面的代码所示:
if(alert.tag == 1)
{
if (buttonIndex == 0)
{
//do stuff
}
else
{
//do other stuff
}
}
if(alert.tag == 2)
///...etc
答案 3 :(得分:0)
我会做Alex建议的,但使用AlertView的tag属性来确定使用了哪个AlertView。