【发布时间】:2012-02-15 20:05:56
【问题描述】:
我正在为 iOS 4.2+ 开发一个应用程序。
我将UINavigationController 子类化为插入两个UIImageView 并使导航栏看起来是自定义的。
一切都很好,但我有一个小问题。
我创建了自定义 UIBarButtonItem 并在我的视图控制器中将它们放入:
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:backButton];
它也可以工作,但问题是要完成这项工作,我需要从以下位置调用它:
- (void)viewDidAppear:(BOOL)animated ;
所以它只出现在动画之后,我可以在自定义按钮替换它之前 1 秒看到非自定义按钮。
(我尝试使用viewWillAppear,但导航栏中没有附加任何内容)
我想知道您是否有可以解决此问题的解决方案。
PS:我从不使用 IB,一切都是以编程方式制作的。
感谢法国!
编辑 1:这里是 viewWillAppear 没有显示任何内容的代码:
- (void)viewWillAppear:(BOOL)animated {
[self setTitle:@"Jeu"];
//Bouton testflight
TIFButton *testFeedbackButton = [[TIFButton alloc]init];
[testFeedbackButton setTitle: @"Envoyer un Feedback" forState:UIControlStateNormal];
[testFeedbackButton addTarget:self action:@selector(launchFeedback) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *testFeedback = [[UIBarButtonItem alloc] initWithCustomView:testFeedbackButton];
self.navigationItem.rightBarButtonItem = testFeedback;
TIFBackButton *backButton = [[TIFBackButton alloc]init];
[backButton setTitle: @"Retour" forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(popToPrecedentViewController) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:backButton];
}
【问题讨论】:
-
它应该与
viewWillAppear一起工作,但是你的backButton视图需要在你分配self.navigationItem.leftBarButtonItem之前被实例化/创建。 -
为什么需要从viewDidAppear调用它?为什么它不能从 viewDidLoad 工作?
标签: ios uinavigationcontroller uinavigationbar uibarbuttonitem viewdidappear