Я, наверное, здесь что-то делаю не так, потому что это выглядит немного глупо.
Я настраиваю пользовательский titleView (в форме UILabel) на моем UINavigationController, который одинаков на каждой странице. Чтобы облегчить это, я создал функцию в своем делегате приложения для правильного отображения метки. Затем я вызываю эту функцию для любых вложенных представлений сразу после того, как помещаю ее в стек навигации.
Вот код (который, вероятно, имеет больше смысла, чем мое объяснение):
//In MyAppDelegate.m:
- (void)showTitleForNavigationController:(UINavigationController*) navController {
UILabel *label = [[UILabel alloc] init];
// set up label attributes
// ...
[label sizeToFit]; //without this line my label won't show at all
[navController.navigationBar.topItem setTitleView:label];
[label release];
}
// In SomeViewController.m, when pushing another controller onto the stack:
UIViewController *otherViewController = //initialize other view controller;
[self.navigationController pushViewController:otherViewController animated:YES];
[(MyAppDelegate*)[[UIApplication sharedApplication] delegate] showTitleForNavigationController:otherViewController.navigationController];
Моя проблема в том, что когда я помещаю следующий контроллер представления в стек, и новый контроллер плавно скользит по нему, на протяжении всей анимации метка остается в левый верхний угол перед окончательной фиксацией после завершения анимации. Это выглядит действительно странно и некрасиво. Как правильно настроить этикетку, чтобы она плавно переходила из следующего представления? Наверняка мне не хватает чего-то простого ...