UIAlertview单击了未调用索引委托方法的按钮

时间:2015-12-04 10:42:22

标签: ios objective-c uialertview uialertviewdelegate

对于带有操作的AlertViews来说是新手。像我在这里找到的例子一样设置了我的。我在.h中设置委托方法,但是当我调试时发现它没有达到我的clickedButtonAtIndex方法。可能遗漏了一些简单的事情: - /任何帮助解决这个问题都将受到赞赏,谢谢。 这是我的代码:

.h文件

@interface LineDetailViewController : UIViewController <UIAlertViewDelegate>

。 m file:

- (IBAction)removeLineButton:(UIButton *)sender {

    NSString * requestSubmitText = [NSString stringWithFormat:@"Hey Bro are you sure you want to remove this line you created, it will also remove all the reviews attached and can not be undone?"];

    UIAlertView *removeLineRequest = [[UIAlertView alloc] initWithTitle:@"WARNING!!"
                                                          message:requestSubmitText
                                                         delegate:nil
                                                cancelButtonTitle:@"Remove It"
                                                otherButtonTitles:@"Cancel",nil];
    [removeLineRequest show];

- (void)alertView:(UIAlertView *)alertView
clickedButtonAtIndex:(NSInteger)buttonIndex{
    //if (buttonIndex == [alertView cancelButtonIndex]){
    if (buttonIndex == 0){
        NSLog(@"Cancel button pressed");
    }else{
        NSLog(@"other button pressed");
    }
}

4 个答案:

答案 0 :(得分:2)

您必须将委托设置为self

UIAlertView *removeLineRequest = [[UIAlertView alloc] initWithTitle:@"WARNING!!"
                                                          message:requestSubmitText
                                                         delegate:self // <- here
                                                cancelButtonTitle:@"Remove It"
                                                otherButtonTitles:@"Cancel",nil];

答案 1 :(得分:1)

致电path

答案 2 :(得分:1)

创建警报视图时,将您的代理设置为自己。而且你已经实现了UIAlertViewDelegate。

答案 3 :(得分:0)

要解决您的问题,只需将delegate设置为self而不是nil。 一些额外的信息,

UIAlertViewUIAlertViewDelegate已被弃用。根据文档,

  

UIAlertView已弃用。请使用UIAlertController代替preferredStyle UIAlertControllerStyleAlert

相关教程here