Я, наверное, здесь что-то не так делаю, потому что это выглядит немного глупо.
Я устанавливаю пользовательский 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];
Моя проблема в том, что когда я помещаю следующий контроллер представления в стек, а новый контроллер плавно скользит по всей длине анимации, метка прикрепляется к верхнему левому углу, прежде чем окончательно встать на место после ее завершения , Это выглядит действительно странно и безобразно.
Как правильно настроить метку, чтобы она плавно скользила от следующего вида? Конечно, я скучаю по чему-то простому ...