Объекты NSArray Objective C к UiLabel setText (который находится в цикле) - PullRequest
0 голосов
/ 03 апреля 2011

У меня есть UIScrollView с включенной подкачкой страниц. Для каждой страницы в Scroll я хочу изменить текст в UILabel. Например. 30 NSArray объектов = 30 страниц.

У меня все работает без NSArray, но мне действительно нужно загрузить NSArray объект (ы) на страницу.

//view did load...All that scroll view properties and other crap</p> <pre><code>CGRect pageFrame ; NSArray *arr = [NSArray arrayWithObjects: @"A", @"B", @"C", nil]; for (int i = 0 ; i < kNumberOfPages ; i++) { pageFrame = CGRectMake(i * scrollView.bounds.size.width, 0.0f, scrollView.bounds.size.width, scrollView.bounds.size.height) ; labelOne = [[UILabel alloc] initWithFrame: pageFrame] ; [scrollView addSubview: labelOne] ; [labelOne release] ; [labelOne setFont: [UIFont boldSystemFontOfSize: 140.0f]] ; [labelOne setTextAlignment: UITextAlignmentCenter] ; [labelOne setTextColor: [UIColor darkTextColor]] ; [labelOne setBackgroundColor:[UIColor clearColor]]; scrollView.backgroundColor = [UIColor clearColor]; for (NSString *new in arr){ [labelOne setText:new]; NSLog(new); } } [scrollView release];

И это вызывает исключение. Есть идеи? По сути, мне нужно получить каждый объект из моего массива в setText (NSString).

Спасибо!

1 Ответ

0 голосов
/ 26 мая 2012

РЕДАКТИРОВАТЬ (потому что я неправильно прочитал вопрос ...):

Две проблемы.Как говорит @Eiko, вам нужно удалить строку [scrollView release];.

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

Вместо:

for (NSString *new in arr){
    [labelOne setText:new];
    NSLog(new);

}

Используйте это:

[labelOne setText:[arr objectAtIndex:i]];
...