覆盖alertView方法

时间:2015-06-29 14:04:14

标签: ios override uialertview

我有一个带按钮的单元格。此按钮用于删除单元格,当我触摸按钮时,我会在删除前显示alertView。我想要的是将参数中的单元格传递给下面的方法:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex forCell:(MissionCollectionViewCell *) cell 

但是在我的UIAlertView初始化期间我不知道该怎么做?

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Attention" message:@"Etes-vous sûr de vouloir supprimer cette mission ?" delegate:self cancelButtonTitle:@"Supprimer" otherButtonTitles:@"Annuler", nil];

1 个答案:

答案 0 :(得分:1)

如果您只想支持iOS8 +,您应该转向使用UIAlertController,它为您提供基于块的处理程序,从而轻松访问变量。如果像我们中的许多人一样,你需要为不能立即升级的人提供服务,我发现here描述的方法是处理UIAlertView的最佳方式。

该链接的示例向UIAlertView添加了一个类别,以允许您使用块而不是委托来处理警报视图完成。使用您的示例,它可以让您提升警报,并在完成时为您提供所需的任何变量:

UIAlertView *alert = 
  [[UIAlertView alloc] initWithTitle:@"Attention" 
                             message:@"Etes-vous sûr de vouloir supprimer cette mission ?" 
                            delegate:self 
                   cancelButtonTitle:@"Supprimer" otherButtonTitles:@"Annuler", nil];

[alert showWithCompletion:^(UIAlertView *alertView, NSInteger buttonIndex) {
    // Since this is a block defined where you called it you can use
    // the variables you want directly 8^).
    if (buttonIndex == alertView.cancelButtonIndex){
      ... Code can access cell directly.
    }
}];

我现在一直使用这个,因为在你提出警报视图的地方旁边完成代码要简单得多。