Пользовательский заголовок панели навигации не очищает предыдущие заголовки перед загрузкой новых - PullRequest
0 голосов
/ 09 марта 2012

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

@implementation UINavigationItem (CustomNavigationItem)
-(UIView *)titleView
{
    [self setTitleView:nil];
    UILabel *newTitleView           = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 220, 32)];
    newTitleView.center             = CGPointMake(160, 22);
    newTitleView.backgroundColor    = [UIColor clearColor];
    newTitleView.textColor          = [UIColor whiteColor];
    newTitleView.textAlignment      = UITextAlignmentCenter;
    newTitleView.text               = self.title;
    newTitleView.textAlignment      = UITextAlignmentCenter;
    return newTitleView;
}

@end

1 Ответ

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

Вы должны удалить старую uilabel из ее суперпредставления, установив nil, он этого не делает. Вот почему вы портите буквы на экране. Я также не думаю, что вы получаете рекурсию, потому что вы звоните сеттеру, но я могу ошибаться.

Самое быстрое, что вы могли бы назначить тегу для вашего нового созданного представления.

[[self.view viewWithTag:YourCustomEnumTag] removeFromSuperView];
// create your view....
textView.tag=YourEnumCustomTag;
...