【问题标题】:Objective C alertView undeclared identifierObjective C alertView 未声明的标识符
【发布时间】:2014-07-30 11:08:54
【问题描述】:

我正在尝试编写不同的 alertViews 代码,以根据用户单击的图像弹出不同的选项。我的 -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 方法说我有一个未声明的 alertView 标识符。任何帮助,将不胜感激。我的部分代码如下:

@implementation Store


-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch *touch = [touches anyObject];

// SKINS SECTION -------------------------------------------------------------------------

if ([touch view] == catCover){
    catCover.image = [UIImage imageNamed:@"CatSelected.png"];
    dogCover.image = [UIImage imageNamed:@"DogCover.png"];
    markCover.image = [UIImage imageNamed:@"MarkCover.png"];
}else if([touch view] == dogCover){
    if (dogBought) {
        catCover.image = [UIImage imageNamed:@"CatCover.png"];
        dogCover.image = [UIImage imageNamed:@"DogSelected.png"];
        markCover.image = [UIImage imageNamed:@"MarkCover.png"];
    }else{
        //add code to pop up window asking if you want to buy or say you don't have enough cat cash

        if (totalCash >= 2000) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase" message:@"Are you sure you want to buy dog skins?" delegate:self cancelButtonTitle:@"Buy" otherButtonTitles:@"Cancel", nil];
            alert.tag = 10;
            [alert show];
        }else{
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase" message:@"Sorry, but you don't have enough points to buy dog skins.  Keep playing!!" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"", nil];
            alert.tag = 11;
            [alert show];
        }

    }
}else if ([touch view] == markCover){
    if (markBought) {
        catCover.image = [UIImage imageNamed:@"CatCover.png"];
        dogCover.image = [UIImage imageNamed:@"DogCover.png"];
        markCover.image = [UIImage imageNamed:@"MarkSelected.png"];
    }else{
        //add code to pop up window asking if you want to buy or say you don't have enough cat cash
        if (totalCash >= 8000) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase" message:@"Are you sure you want to buy mark skins?" delegate:self cancelButtonTitle:@"Buy" otherButtonTitles:@"Cancel", nil];
            alert.tag = 20;
            [alert show];
        }else{
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase" message:@"Sorry, but you don't have enough points to buy mark skins.  Keep playing!!" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"", nil];
            alert.tag = 21;
            [alert show];
        }
    }
}

// CATCHERS SECTION ----------------------------------------------------------------------

if ([touch view] == bucketCover) {
    bucketCover.image = [UIImage imageNamed:@"BucketSelected.png"];
    rosieCover.image = [UIImage imageNamed:@"rosieCover.png"];
}else if([touch view] == rosieCover){
    if (rosieBought) {
        bucketCover.image = [UIImage imageNamed:@"BucketCover.png"];
        rosieCover.image = [UIImage imageNamed:@"rosieSelected.png"];
    }else{
        //add code to pop up window asking if you want to buy or say you don't have enough cat cash
        if (totalCash >= 10000) {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase" message:@"Are you sure you want to buy this catcher?" delegate:self cancelButtonTitle:@"Buy" otherButtonTitles:@"Cancel", nil];
            alert.tag = 30;
            [alert show];
        }else{
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Purchase" message:@"Sorry, but you don't have enough points to buy this catcher.  Keep playing!!" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"", nil];
            alert.tag = 31;
            [alert show];
    }
}

}



-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

switch (alert.tag) {
    case 10:
        if (buttonIndex == 0){
            totalCash -= 2000;
            dogPrice.text = [NSString stringWithFormat:@"Purchased"];
            catCover.image = [UIImage imageNamed:@"CatCover.png"];
            dogCover.image = [UIImage imageNamed:@"DogSelected.png"];
            markCover.image = [UIImage imageNamed:@"MarkCover.png"];
            [self buyItem];
        }
        break;

    case 11:

        break;

    case 20:
        if (buttonIndex == 0){
            totalCash -= 8000;
            markPrice.text = [NSString stringWithFormat:@"Purchased"];
            catCover.image = [UIImage imageNamed:@"CatCover.png"];
            dogCover.image = [UIImage imageNamed:@"DogCover.png"];
            markCover.image = [UIImage imageNamed:@"MarkSelected.png"];
            [self buyItem];
        }
        break;

    case 21:

        break;

    case 30:
        if (buttonIndex == 0) {
            totalCash -= 10000;
            rosiePrice.text = [NSString stringWithFormat:@"Purchased"];
            bucketCover.image = [UIImage imageNamed:@"BucketCover.png"];
            rosieCover.image = [UIImage imageNamed:@"rosieSelected.png"];
            [self buyItem];
        }
        break;

    case 31:

        break;

    default:

        break;
}

}

【问题讨论】:

  • 实际的错误信息是什么?

标签: objective-c uialertview undeclared-identifier


【解决方案1】:

变化:

switch (alert.tag)

switch (alertView.tag)

【讨论】:

    【解决方案2】:

    您缺少touchesBegan:withEvent: 上的右大括号,因此它认为以下方法声明是该方法主体的一部分。

    使用您的工具支持的标准缩进方案可以帮助解决此问题。我只是复制、粘贴并重新格式化代码,它立即跳出来。

    【讨论】:

      【解决方案3】:

      我看不到变量“alert”的声明位置。那可能是您未声明的标识符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多