Старые взгляды перекрывают новые - PullRequest
0 голосов
/ 22 июня 2009

У меня следующая проблема:

В моем приложении я создаю временный объект, например метку, следующим образом:

UILabel *tempLabel = [ [UILabel alloc] initWithFrame: CGRectMake(100, 5, 200, 30)];
tempLabel.backgroundColor = [UIColor colorWithRed: 1.0f green: 1.0f blue: 1.0f alpha: 0.0f];
tempLabel.text = [ [WordsDatabase sharedWordsDatabase] dbName];

[ [self view] addSubview: tempLabel];
[tempLabel release];

Этот код вызывается из метода viewWillAppear.

Когда сам вид вызывается в первый раз, все в порядке. Но во второй раз новый ярлык, похоже, перекрывается со старым.

Есть ли какие-либо шаги, чтобы этот эффект исчез? Что-то добавить в метод viewWillDisappear?

Я попытался добавить объявление метки в интерфейс класса и в методе viewWillDisappear вызвать [label removeFromSuperview]. И в этом случае все хорошо. Есть ли способ сделать это без сохранения ссылки на метку?

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

1 Ответ

0 голосов
/ 22 июня 2009

Вы можете отсортировать свои подпредставления, используя метод sortSubviewsUsingFunction:context:. Одним из способов реализации этого является добавление тега (свойство tag UIView) с целочисленным значением для каждого подпредставления. Затем вы можете сортировать по тегу следующим образом (при условии, что тег является числом):

Функция сортировки:

int viewObjectSortByTag(NSControl *firstView, NSControl *secondView, void *context) {
    return ([firstView tag] > [secondView tag]) ? NSOrderedAscending : NSOrderedDescending;
}

После добавления подпредставления просто отсортируйте просмотры:

[[self view] sortSubviewsUsingFunction:&viewObjectSortByTag context:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...