Ios 按UILabel按钮将UILabel的文本更改为随机数组对象

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

正如标题所说。。。我需要通过按UILabel按钮将UILabel的内容从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不更新标签,则插座未连接或此代码甚至未被调用。你都查过了吗?