Ios 制作一个按钮,向标签添加/减去一个值,该值将显示标签上该数字对应的图片

Ios 制作一个按钮,向标签添加/减去一个值,该值将显示标签上该数字对应的图片,ios,uibutton,uiimage,uilabel,Ios,Uibutton,Uiimage,Uilabel,我在自学,不知道我的代码有什么问题,也不知道如何编写更简短的干净代码 我只希望数字设置在1,2,3,4之间。 所以我不想要负数或任何大于4的数字。 数字在模拟器上显示得很好,也很正确,但是图片被弄乱了。 它运行1,2,3,4,然后在返回4,3,2,1时出错 - (IBAction)plusLevelPressed:(id)sender { int intValueFromFirstLabel = [_lvlLabel.text intValue]; if(intValueFro

我在自学,不知道我的代码有什么问题,也不知道如何编写更简短的干净代码

我只希望数字设置在1,2,3,4之间。 所以我不想要负数或任何大于4的数字。 数字在模拟器上显示得很好,也很正确,但是图片被弄乱了。 它运行1,2,3,4,然后在返回4,3,2,1时出错

- (IBAction)plusLevelPressed:(id)sender {
    int intValueFromFirstLabel = [_lvlLabel.text intValue];

    if(intValueFromFirstLabel != 4)
    {
        _lvlLabel.text = [NSString stringWithFormat:@"%d",[_lvlLabel.text intValue]+1];
    }
    //change image according to lvl selection
    if(intValueFromFirstLabel == 0)
    {
        UIImage *lvl1 = [UIImage imageNamed:@"lvl1.jpg"];
        [_lvlMap setImage:lvl1];
    }

    if(intValueFromFirstLabel == 1)
    {
        UIImage *lvl2 = [UIImage imageNamed:@"lvl2.jpg"];
        [_lvlMap setImage:lvl2];
    }

    if(intValueFromFirstLabel == 2)
    {
        UIImage *lvl3 = [UIImage imageNamed:@"lvl3.jpg"];
        [_lvlMap setImage:lvl3];
    }

    if(intValueFromFirstLabel == 3)
    {
        UIImage *lvl4 = [UIImage imageNamed:@"lvl4.jpg"];
        [_lvlMap setImage:lvl4];
    } }

- (IBAction)minusLevelPressed:(id)sender {
    int intValueFromFirstLabel = [_lvlLabel.text intValue];

    if(intValueFromFirstLabel != 1)
    {
        _lvlLabel.text = [NSString stringWithFormat:@"%d",[_lvlLabel.text intValue]-1];
    }

    //change image according to lvl selection
    if(intValueFromFirstLabel == 0)
    {
        UIImage *lvl1 = [UIImage imageNamed:@"lvl1.jpg"];
        [_lvlMap setImage:lvl1];
    }

    if(intValueFromFirstLabel == 1)
    {
        UIImage *lvl2 = [UIImage imageNamed:@"lvl2.jpg"];
        [_lvlMap setImage:lvl2];
    }

    if(intValueFromFirstLabel == 2)
    {
        UIImage *lvl3 = [UIImage imageNamed:@"lvl3.jpg"];
        [_lvlMap setImage:lvl3];
    }

    if(intValueFromFirstLabel == 3)
    {
        UIImage *lvl4 = [UIImage imageNamed:@"lvl4.jpg"];
        [_lvlMap setImage:lvl4];
    }

}
我学习这个是为了让自己有一个更好的职业,所以我真的很感激所有的帮助!
谢谢

你是不是碰巧去了:

[self plusLevel]; intValueFromFirstLabel == 0, _lvlLabel == 1 
[self plusLevel]; intValueFromFirstLabel == 1, _lvlLabel == 2
[self plusLevel]; intValueFromFirstLabel == 2, _lvlLabel == 3
[self plusLevel]; intValueFromFirstLabel == 3, _lvlLabel == 4
然后

当您开始执行minusLevel时,第一次运行时intValueFromFirstLabel的值为4,因为它的值为_lvlLabel。但是,您的minusLevel不具备以下条件:

if(intValueFromFirstLabel == 4)
{

}
所以你们看到的是,我想当你们负一级时,它似乎落后一级,对吗

无论采用哪种方式,我认为您都可以将代码精简为如下所示:

-(IBAction)plusLevelPressed:(id)sender
{
    int intValueFromFirstLabel = [_lvlLabel.text intValue];

    // only update level image if level is within 0 to 3
    if(intValueFromFirstLabel > -1 && intValueFromFirstLabel < 4)
    {
        [self setLevelImageForLevelNumber:intValueFromFirstLabel];

        _lvlLabel.text = [NSString stringWithFormat:@"%d",[_lvlLabel.text intValue]+1];
    }
}

-(IBAction)minusLevelPressed:(id)sender
{
    int intValueFromFirstLabel = [_lvlLabel.text intValue];

    // only update level image if level is within 0 to 3
    if(intValueFromFirstLabel > -1 && intValueFromFirstLabel < 4)
    {
        [self setLevelImageForLevelNumber:intValueFromFirstLabel];

        _lvlLabel.text = [NSString stringWithFormat:@"%d",[_lvlLabel.text intValue]-1];
    }
}

-(void)setLevelImageForLevelNumber:(int)levelNumber
{
    NSString *strImageName = [[NSString alloc] initWithFormat:@"lvl%d.jpg", levelNumber + 1];
    UIImage *lvlImage = [UIImage imageNamed:strImageName];
    [_lvlMap setImage:lvlImage];
}

混乱是什么意思我们不能读心术。您期望它发生什么以及实际发生什么?您好,非常感谢您的输入,我非常喜欢新的较短代码。不幸的是,使用您的代码minusLevelPressed根本不起作用,因为intValueFromFirstLabel<4,但是如果我将数字更改为5,它仍然会出现与我类似的问题。[很抱歉我之前没有解释,我原始代码中的问题是,当它位于Lv4,然后按下Minuslevel时,它是这样的;lvlLabel=3 lvlmap=4,然后是2/4,然后是1/3,然后再次按下=1/2]ps。很抱歉,回复太晚了,我已经很累了。
-(IBAction)plusLevelPressed:(id)sender
{
    int intValueFromFirstLabel = [_lvlLabel.text intValue];

    // only update level image if level is within 0 to 3
    if(intValueFromFirstLabel > -1 && intValueFromFirstLabel < 4)
    {
        [self setLevelImageForLevelNumber:intValueFromFirstLabel];

        _lvlLabel.text = [NSString stringWithFormat:@"%d",[_lvlLabel.text intValue]+1];
    }
}

-(IBAction)minusLevelPressed:(id)sender
{
    int intValueFromFirstLabel = [_lvlLabel.text intValue];

    // only update level image if level is within 0 to 3
    if(intValueFromFirstLabel > -1 && intValueFromFirstLabel < 4)
    {
        [self setLevelImageForLevelNumber:intValueFromFirstLabel];

        _lvlLabel.text = [NSString stringWithFormat:@"%d",[_lvlLabel.text intValue]-1];
    }
}

-(void)setLevelImageForLevelNumber:(int)levelNumber
{
    NSString *strImageName = [[NSString alloc] initWithFormat:@"lvl%d.jpg", levelNumber + 1];
    UIImage *lvlImage = [UIImage imageNamed:strImageName];
    [_lvlMap setImage:lvlImage];
}