UIActivityIndicatorView в заголовке раздела UITableView исчезает при изменении ориентации

У меня есть приложение для iPhone, содержащее UITableView в сгруппированном стиле. В ViewController я определил UIActivityIndicatorView как свойство:

self.browsingIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
browsingIndicator.hidesWhenStopped = YES;

Я хочу разместить этот счетчик в одном из заголовков раздела таблиц:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIView *sectionHeader = [[[UIView alloc] init] autorelease];
    [sectionHeader addSubview:browsingIndicator];
    browsingIndicator.center = CGPointMake(20, 30);

    return sectionHeader;
}

Это работает. Теперь проблема: как только я меняю ориентацию устройства, индикатор активности исчезает, он снова появляется только тогда, когда я перетаскиваю его с видимого экрана и обратно. Возврат устройства в исходную ориентацию не помогает, изменение «hidesWhenStopped» на NO ни один.

Может ли кто-нибудь указать мне в правильном направлении? Спасибо!


person Cornelius    schedule 20.07.2010    source источник


Ответы (2)


Спасибо за ваш ответ Майк, но я не думаю, что это все. UIActivityIndicatorView позиционируется и изменяется правильно, но не отображается. Когда я заставляю заголовок раздела перерисовываться (прокручивая его из поля зрения), он вращается точно в нужном месте, даже в альбомной ориентации.

Я попытался явно установить autoResizingMask, но это не изменило исчезновение 1.

Редактировать: не удалось прокомментировать ваш ответ, я действительно не получил пост/комментарий без регистрации здесь, извините :-/

Редактировать2:

[sectionHeader addSubview:browsingIndicator];

кажется частью проблемы. Если я вернусь для просмотраIndicator напрямую, он работает.

Теперь вроде решено: если я определяю UIView для заголовка раздела вне метода viewForHeaderInSection, а затем просто возвращаю его, он работает.

person Mark Gibson    schedule 20.07.2010
comment
это потому, что вы автоматически выпускаете заголовок, что означает, что он может быть выпущен в будущем. когда вы говорите определить uiview за пределами ..., это работает, потому что вы где-то его сохраняете, поэтому он не выпускается. - person user102008; 28.04.2011
comment
Вау... и у тебя, и у ОП одинаковый Identicon O.o - person Ky Leggiero; 17.05.2016

Вы хотите установить autoResizingMask счетчика соответствующим образом.

person Mike Weller    schedule 20.07.2010