Обновление / удаление UILables из View - PullRequest
1 голос
/ 29 января 2010

Я создаю UILabels в моем UIView, заполняя их данными, добавляя их для просмотра и освобождая их.

 UILabel *speed = [self scrollLabel:@"some Text" x:455.0f y:75.0f];
 [scrollView addSubview:speed];
 [speed release];

Метод:

- (UILabel *)scrollLabel:(NSString *)text x:(float)x_ y:(float)y_ {

 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x_, y_, 300.0f, 20.0f)];
 [label setText:NSLocalizedString(text,@"")];
 [label setFont:[UIFont fontWithName:@"Helvetica" size:14]];
 [label setTextColor:[UIColor colorWithRed:255.0 green:255.0 blue:255.0 alpha:1.9]];
 [label setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]];

 return label;

}

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

Проблема в том, что старые UILabels все еще существуют, поэтому мой вопрос, каков наилучший способ удалить эти специальные метки?

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

Другой вопрос: есть ли лучший способ настройки стилей шрифта для нескольких меток?

1 Ответ

1 голос
/ 29 января 2010

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

Если вы хотите удалить только определенные UILabels, предоставьте больше информации о том, какими они должны быть.

Одна вещь, которую я хотел бы предложить для вашего кода выше: ваш метод - (UILabel *)scrollLabel:(NSString *)text x:(float)x_ y:(float)y_ должен возвращать автоматически выпущенную UILabel. Таким образом, его последняя строка должна быть return [label autorelease];. Если вы хотите вернуть сохраненный объект, добавьте new / copy / retain в имя метода, чтобы вы знали, что возвращаемый объект сохраняется при каждом его вызове.

Следовательно, вам не нужно освобождать ярлык после добавления его в UIView. Это не влияет на вашу конкретную программу, но полезно привыкнуть делать это таким образом, чтобы в будущем вы не испортили свои записи / релизы.

...