单击导航返回按钮时将调用啥方法-IOS?

Posted

技术标签:

【中文标题】单击导航返回按钮时将调用啥方法-IOS?【英文标题】:What method will be called when Navigation back button is clicked -IOS?单击导航返回按钮时将调用什么方法-IOS? 【发布时间】:2012-08-03 06:11:19 【问题描述】:

这个问题看起来重复了,但我没有找到适合我的问题的解决方案。就我而言,单击后退按钮后,我想隐藏导航栏。例如View1 推送了 view2,view2 将有导航栏,一旦我点击返回它会让我回到 view 1 它不应该包含导航栏我需要隐藏它。我尝试在视图 2 中使用 viewWillDisappear 方法进行隐藏,它可以工作,但是如果我有更多视图并且如果我单击后退按钮,我会从视图 1 推送每个视图,导航栏应该隐藏在视图 1 中。无论如何,在视图 1 本身中是否知道其他视图已弹出。我在 view1 中尝试了 viewwillappear 方法,它没有被调用。我可以在这里做什么?

这个方法在我最初加载 view1 时被调用,而不是在弹出 view2 之后调用。

    - (void) viewWillAppear : (BOOL)animated

    [root_obj.navigationController setNavigationBarHidden:YES animated:YES];

这就是我推动视图 2 的方式..

[root_obj.navigationController pushViewController:view2 animated:NO];

提前致谢

【问题讨论】:

“我在 view1 中尝试了 viewwillappear 方法,它没有被调用。”你确定吗?我不明白为什么不应该调用它。 @inoob 我试过了。它没有被调用。 我有几个类似的应用程序,其中我的第一个屏幕没有导航栏,其余屏幕都有。在那我总是添加导航栏隐藏在viewWillAppear 并且似乎工作得很好。如果可能的话,你能显示viewWillAppear 代码吗? 或者推的方式我做错了??? @FerozMohideen,尝试在viewWillAppear 中执行NSLog,据我所知viewWillAppear 总是在视图出现时被调用。-(void) viewWillAppear : (BOOL)animated [root_obj.navigationController setNavigationBarHidden:YES animated:YES]; NSLog(@"VIEW WILL APPEAR!!"); [super viewWillAppear:animated]; ,请试试这个代码。 【参考方案1】:

我想,你忘了调用 viewWillAppear: 超类的方法。

-(void) viewWillAppear : (BOOL)animated


    [super viewWillAppear:animated];

    [root_obj.navigationController setNavigationBarHidden:YES animated:YES];

【讨论】:

【参考方案2】:

你为什么不把NavigationBar隐藏在View1'sViewDidAppear方法中

编辑

我不确定您的代码有什么问题,但您可以在 ViewWillAppearViewDidAppear 方法中执行此类操作以获取更多信息 UIViewController Class Reference 并检查 ViewWillAppearViewDidAppear

【讨论】:

以上是关于单击导航返回按钮时将调用啥方法-IOS?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式调用 iOS 上的导航控制器后退按钮

iOS 11 使用方法替换(Method Swizzling),去掉导航栏返回按钮的文字

按下按钮时将用户返回到初始应用程序状态

iOS项目导航栏返回按钮

在ios中点击后退按钮后调用啥方法

Flutter——两种监听导航栏返回按钮的方法