每次我在UIActionSheet中按下取消按钮,它都会运行一个方法。我不知道为什么,我多次检查了整个代码,但我仍然看不到问题。你能帮我找到吗?
-(IBAction)moreOptions
{
giftTitle = self.title;
if(![giftTitle isEqualToString:@"bla"])
{
actionSheet = [[UIActionSheet alloc]initWithTitle:giftTitle
delegate:self
cancelButtonTitle:@"Back"
destructiveButtonTitle:nil
otherButtonTitles:@"Send via email",
@"Read in Wikipedia"
, nil];
}
else
{
actionSheet = [[UIActionSheet alloc]initWithTitle:giftTitle
delegate:self
cancelButtonTitle:@"Back"
destructiveButtonTitle:nil
otherButtonTitles:@"Send via email",
@"Read in Wikipedia", @"Pineapple mode"
, nil];
}
actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
[actionSheet showInView:self.view.window];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
// выстраеваем дальнейшие действия кнопок
switch (buttonIndex)
{
case 0:
[self showPicker];
break;
case 1:
[self goWiki];
break;
case 2:
[self showPineapple];
break;
default:
break;
}
}
所以它运行方法showPineapple
。请帮忙!
答案 0 :(得分:1)
当您按下操作工作表上的取消按钮时,它的委托功能始终使用最后一个索引进行调用。
如果您要实现多个操作表,那么只需按标记值使用它。
答案 1 :(得分:0)
您需要实现以下内容:
更改您的if
和else
部分,为每个UIActionSheet添加唯一标记:
if(![giftTitle isEqualToString:@"bla"]) {
actionSheet = [[UIActionSheet alloc]initWithTitle:giftTitle
delegate:self
cancelButtonTitle:@"Back"
destructiveButtonTitle:nil
otherButtonTitles:@"Send via email", @"Read in Wikipedia" , nil];
actionSheet.tag = 10;
} else {
actionSheet = [[UIActionSheet alloc]initWithTitle:giftTitle
delegate:self
cancelButtonTitle:@"Back"
destructiveButtonTitle:nil
otherButtonTitles:@"Send via email", @"Read in Wikipedia", @"Pineapple mode", nil];
actionSheet.tag = 20;
}
然后在actionSheet中查找标记:clickedButtonAtIndex:message handler:
case 2:
if (actionSheet.tag == 20)
[self showPineapple];
break;
这意味着[self showPineapple]
只能在else
方案中运行,而if
方案中不会发生任何事情(正如buttonIndex
3中的任何内容都不会发生{ {1}}场景(取消按钮确实位于索引3处)。