Как получить текущий UILABEL текст из Uiscroll View Runtime - PullRequest
0 голосов
/ 23 марта 2012

У меня есть задача разработать приложение с подсчетом слов и отображением во время выполнения сгенерированного uiscrollview с uilabel в качестве подпредставления.

Процесс подобен тому, когда пользователь загружает страницу в то время, когда 1000 слов заполнят сгенерированную rutime uilabel с scrollview. но в приложении у нас есть одна кнопка для добавления текущего uilabel-текста при нажатии кнопки.

и слова приходят случайным образом из базы данных. когда я нажимаю на кнопку, это дает мне другое слово. из прокрутки просмотреть отображаемое слово.

Ниже приведен мой код для заполнения данных в uilabel с помощью scrollview:

wordName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(searchStatement, 2)];
                [wordNameArray addObject:wordName];
int i = 0;
    for (i = 1; i <= kNumImages; i++)
    {
        randomN = [wordNameArray objectAtIndex:arc4random() % [wordNameArray count]];

        UIImage *image = [UIImage imageNamed:@"word_bg.png"];
        word = [[UILabel alloc]initWithFrame:CGRectMake(15,12,250,120)];
        [word setFont:[UIFont fontWithName:@"Helvetica-Bold" size:36.0f]];
        word.textColor = [UIColor whiteColor];
        word.lineBreakMode = UILineBreakModeWordWrap;
        word.numberOfLines = 2;
        word.textAlignment = UITextAlignmentCenter;
        word.backgroundColor = [UIColor clearColor];
        [word setText:randomN];
        lblWord.text = word.text;

        word.tag = i;
        NSLog(@"tag no:%d",word.tag);

        imageView = [[UIImageView alloc] initWithImage:image];
        [imageView addSubview:word];

        CGRect rect = imageView.frame;
        rect.size.height = kScrollObjHeight;
        rect.size.width = kScrollObjWidth;
        imageView.frame = rect;
        imageView.tag = i;  

        //NSLog(@"%@",word.text);
        //NSLog(@"%@",lblWord.text);

        //  [scrollView1 addSubview:l];
        [scrollView1 addSubview:imageView];

        touchToSee.hidden = TRUE;
        [imageView release];
    }

    [self layoutScrollImages];

Ниже приводится мое событие прокрутки для получения слова из метки, но оно дает мне последнее слово из массива:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    touchToSee.hidden = TRUE;
    NSLog(@"word-%@",word.text);

}

И другие, когда я нажимаю на кнопку, я не получаю идеальную работу, поэтому для этого ниже мой код:

NSString *getword = [NSString stringWithFormat:@"%@",word.text];
    NSLog(@"lblCountdownBackward:%@",word.text);

Так что, пожалуйста, помогите мне и предоставьте мне пример кода, если это возможно.

спасибо заранее.

1 Ответ

0 голосов
/ 23 марта 2012

Похоже, вы создаете много словесных объектов и добавляете их на экран.

В цикле for вы выполняете код до kNumImages.И при каждом запуске word объект заменяется новым.

Так что, когда вы получите слово позже, это будет самый последний word созданный вами объект (отсюда и последнее слово).

Чтобы обойти это, вы можете использовать NSMutableArray и продолжать добавлять к нему новый объект UILabel (вместо создания объекта word).А потом сделать что-то вроде

[array objectAtIndex:0].text;
...