我已经UINavigationController
用我的初始视图控制器进行了所有设置,它允许用户输入一个值。它还有一个自定义的 UILabel 作为titleView
,这样我就可以显示一个带有绿色文本的完全“扁平”的导航栏。
然后,当他们按下 a 时UIButton
,它会将一个新视图推送到堆栈上,这显然会消除UINavigationItem
带有我自定义 titleView 的那个。
我的问题是:我如何继续titleView
可靠地为导航栏使用自定义视图?
我显然已经尝试过使用类的delegate
方法(willPush
和didPush
),但第一个显然还topItem
没有,所以它最终将我的 UILabel 添加到 current navigationItem
,并且didPush
在视图控制器动画之间存在明显的延迟,并且正在应用的新titleView
标签。
我已经尝试并搜索了很多,但似乎没有什么工作正常,我不想在推送新的视图控制器时丢失动画。
有任何想法吗?
编辑:在下面发布了我的代码的粗略大纲示例,它不是 100% 完美,因为它是对我正在做的事情的概述,而不是直接从 XCode 粘贴。
// This code lives in the app delegate
// Set up the root view controller that needs to be contained
UIViewController *myFrontView = [[MYFrontViewController alloc] init];
// Set up the uinavigationcontroller
UINavigationController *myNavController = [[MYNavigationController alloc] initWithRootViewController: myFrontView];
// Customise the initial UINavbar titleView:
UILabel *myLabel = [[UILabel alloc] initWithText:@"My custom text"];
// Change the text Color.
myLabel.textColor = [UIColor redColor];
// Set my new label as the custom titleview.
[myNavController.navigationBar.topItem setTitleView: myLabel];
// Boilerplate code to make myNavController the rootViewController of the window etc.