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

Posted

技术标签:

【中文标题】制作一个按钮以向标签添加/减去一个值,该标签将显示与标签上该数字对应的图片【英文标题】:Make a button to add/subtract a value to a label which will show a corresponding picture to that number on the label 【发布时间】:2014-07-07 12:55:13 【问题描述】:

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

我希望数字只设置在 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];
    


我正在学习这个以建立一个更好的职业生涯,所以我非常感谢所有的帮助! 谢谢!

【问题讨论】:

“搞砸了”是什么意思? :D 我们无法读心。您预计会发生什么以及实际发生了什么? 【参考方案1】:

你是不是碰巧去了:

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

然后

[self minusLevel]; intValueFromFirstLabel == 4, _lvlLabel == 3 * 
[self minusLevel];
[self minusLevel];
[self minusLevel];

当您开始通过 minusLevel 时,第一次运行时的 intValueFromFirstLabel 为 4,因为它采用 _lvlLabel 的值但是,您的 minusLevel 没有条件

if(intValueFromFirstLabel == 4)



所以我认为你看到的是当你减去等级时,它似乎落后了 1 级,对吗?

无论哪种方式,我认为您可以像这样将代码改进为更短:

-(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];

【讨论】:

嗨,非常感谢您的意见,我非常喜欢新的更短的代码。 不幸的是,由于“intValueFromFirstLabel

以上是关于制作一个按钮以向标签添加/减去一个值,该标签将显示与标签上该数字对应的图片的主要内容,如果未能解决你的问题,请参考以下文章

如何在h5中添加视频?

Swift 在按钮单击上发送标签文本作为解析对象值

JS实现点击参数面板按钮显示或隐藏数据

前端:运用js制作一个随机点名的程序

前端:运用js制作一个随机点名的程序

网页制作的基本知识(标签)