Ios 按UILabel按钮将UILabel的文本更改为随机数组对象
正如标题所说。。。我需要通过按UILabel按钮将UILabel的内容从NSArray更改为随机对象。。。以下是按钮中的代码:Ios 按UILabel按钮将UILabel的文本更改为随机数组对象,ios,objective-c,Ios,Objective C,正如标题所说。。。我需要通过按UILabel按钮将UILabel的内容从NSArray更改为随机对象。。。以下是按钮中的代码: - (IBAction)moodButton:(UILongPressGestureRecognizer *)sender { UILabel *moodLabel = [[UILabel alloc] init]; if (sender.state == UIGestureRecognizerStateEnded) { NSArray
- (IBAction)moodButton:(UILongPressGestureRecognizer *)sender {
UILabel *moodLabel = [[UILabel alloc] init];
if (sender.state == UIGestureRecognizerStateEnded) {
NSArray *moodArray = [[NSArray alloc] initWithObjects:@"Happy", @"Angry", @"Sad", @"Bored",
@"Tired", @"Stressed", @"Busy", nil];
id randomObject = [moodArray objectAtIndex:arc4random_uniform([moodArray count])];
if (randomObject == moodArray[0]) {
moodLabel.text = @"Happy";
}
else if (randomObject == moodArray[1]) {
moodLabel.text = @"Angry";
}
else if (randomObject == moodArray[2]) {
moodLabel.text = @"Sad";
}
else if (randomObject == moodArray[3]) {
moodLabel.text = @"Bored";
}
else if (randomObject == moodArray[4]) {
moodLabel.text = @"Tired";
}
else if (randomObject == moodArray[5]) {
moodLabel.text = @"Stressed";
}
else if (randomObject == moodArray[6]) {
moodLabel.text = @"Busy";
}
}
}
我做错了什么
提前感谢。您的代码有很多问题
if
语句是完全冗余的randomObject
已经包含数组中的随机字符串,因此不需要手动检查它包含的值。只需删除整个if
语句,然后执行以下操作:
moodLabel.text=(NSString*)随机对象代码>
James的回答涵盖了这些问题,但我想我会通过展示一些代码来澄清
- (IBAction)moodButton:(UILongPressGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
NSArray *moodArray = @[ @"Happy", @"Angry", @"Sad", @"Bored",
@"Tired", @"Stressed", @"Busy" ];
NSString *randomString = moodArray[arc4random_uniform([moodArray count])];
self.moodLabel.text = randomString;
}
}
请注意如何从现有标签中获取标签。不要创建一个新的。还要注意对数组及其访问使用了现代Objective-C语法。怎么了???它会崩溃吗???标签没有更新吗???标签没有更新。。。对不起,我也应该提到这一点-你的按钮有多种功能吗?一个用于正常点击,一个用于点击并保持?我只是想知道你为什么要在上面使用手势识别器。不,我只有长握键:)和
randomObject
应该是NSString
,而不是id
。不,我把它拿出来了。我一时糊涂了您是否修复了如何获取对现有标签的引用?您没有提供足够的详细信息,无法了解如何访问现有标签。您放置了要更新的标签。你一定已经有标签了,对吧?使用对该标签的引用。问题中的代码的问题在于您创建了一个新标签并对其进行了更新。您需要更新已经存在并且已经在屏幕上的标签。是的,它应该更新,并且这是您应该在此代码中引用的标签。如果self.moodLabel.text=randomString代码>不更新标签,则插座未连接或此代码甚至未被调用。你都查过了吗?