Ios 制作一个按钮,向标签添加/减去一个值,该值将显示标签上该数字对应的图片
我在自学,不知道我的代码有什么问题,也不知道如何编写更简短的干净代码 我只希望数字设置在1,2,3,4之间。 所以我不想要负数或任何大于4的数字。 数字在模拟器上显示得很好,也很正确,但是图片被弄乱了。 它运行1,2,3,4,然后在返回4,3,2,1时出错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
- (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];
}