gpt4 book ai didi

ios - 为 UINavigationController 制作自定义后退按钮

转载 作者:可可西里 更新时间:2023-11-01 05:01:06 25 4
gpt4 key购买 nike

我正在为 iOS 4.2+ 开发一个应用程序。我将我的 UINavigationController 子类化以插入两个 UIImageView 并使导航栏看起来很自定义。一切都很好,但我有一个小问题。我创建了自定义 UIBarButtonItem 并在我的 View Controller 中放置了它们:

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];
}

最佳答案

假设您有两个 ViewController,A 和 B,当 A 位于最顶层时您将 B 压入堆栈,并且您想要自定义当 B 位于最顶层时显示的后退按钮。

通常,这样做的方法是设置 ViewController AnavigationItem.backBarButtonItem

相反,您正在做的是通过设置导航栏左侧的 navigationItem.leftBarButtonItem 为 ViewController B 提供一个自定义按钮。

你已经很好地实现了这个方法,除了即使你没有设置 ViewController AnavigationItem.backBarButtonItem,默认情况下你仍然会得到一个默认的返回按钮也是如此。因此该按钮可能显示在您的自定义后退按钮之上。

如果您设置 ViewController B 的 navigationItem.hidesBackButton = YES 那么您应该没有任何问题。

将来,当您实现自定义后退按钮时,您应该通过设置 navigationItem.backBarButtonItem 而不是 navigationItem.leftBarButtonItem 来实现。您必须进行的一项调整是,使用这种方法,例如,您将使用 ViewController AnavigationItem 来更改在 ViewController < strong>B在上面。

关于ios - 为 UINavigationController 制作自定义后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9300503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com