博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
修改系统默认的backBarButtonItem的title和action
阅读量:6041 次
发布时间:2019-06-20

本文共 2236 字,大约阅读时间需要 7 分钟。

1、为什么在UIViewController内设置了self.navigationItem.backBarButtonItem 对于导航栏显示的backBarButtonItem不起任何作用?

 

首先我们得了解一下

 

backBarButtonItem

leftBarButtonItem

rightBarButtonItem

 

他们都属于UINavigationItem的组成部分,都显示在navigationBar上,都属于UIBarButtonItem类

 

backBarButtonItem和另外两兄弟是有区别的

比如当前有AController准备push到BController,设置backBarButtonItem的title和image需要在AController内设置,在调用AController Push:B之前进行设置,AController.navigationItem.backBarButtonItem = ....

 

而其他两兄弟则是在BController的ViewDidload后设置均可.

 

 

backBarButtonItem的描述

Discussion

 

When this navigation item is immediately below the top item in the stack, the navigation controller derives the back button for the navigation bar from this navigation item. When this property is nil, the navigation item uses the value in its title property to create an appropriate back button. If you want to specify a custom image or title for the back button, you can assign a custom bar button item (with your custom title or image) to this property instead. When configuring your bar button item, do not assign a custom view to it; the navigation item ignores custom views in the back bar button anyway.

说明了backBarButtonItem只能自定义image和title,不能重写target or action,系统会忽略其他的相关设置项。

如果硬是需要重写action做一些其他的工作,则需要自定义一个leftBarButtonItem,因为系统定义leftBarButtonItem的显示优先级比backBarButtonItem优先级高,当存在leftBarButtonItem时,自动忽略backBarButtonItem,达到重写backBarButtonItem的目的。

 

 

2、各个对象下的backBarButtonItem的区别

对于这3兄弟,在3个类下面都能发现他们

 

比如当前在一个UIViewController内,输入以下方法都能发现他们。(同leftBarButtonItem | rightBarButtonItem)

 

self.navigationItem.backBarButtonItem

self.navigationController.navigationItem.backBarButtonItem

self.navigationController.navigationBar.backItem.backBarButtonItem

 

比如在AController->BController,在A设置了self.navigationItem.backBarButtonItem,经过试验发现,这个backBarButtonItem为BController的self.navigationController.navigationBar.backItem.backBarButtonItem。

 

UIViewController的属性navigationItem正是被当前UINavigationBar--[UINavigationBar appearance]管理的属性

 

 
@property(nonatomic, readonly, retain) *navigationItem

The navigation item used to represent the view controller in a parent’s navigation bar. (read-only)

 

 

self.navigationController.navigationItem.backBarButtonItem

则是表示当前navigationController的parent的UINavigationBar,一般情况下没有这样的嵌套。

转载于:https://www.cnblogs.com/envyhappy/p/4688884.html

你可能感兴趣的文章
文本编程
查看>>
乔布斯走了。你还期待苹果吗?
查看>>
优先级
查看>>
Tomcat与Web服务器、应用服务器的关系
查看>>
用DFS实现全排列 & 八皇后问题
查看>>
深度学习博客
查看>>
Android总结篇系列:Android Service
查看>>
Android dumpsys命令的使用
查看>>
Linux Kernel系列一:开篇和Kernel启动概要
查看>>
BZOJ 2756: [SCOI2012]奇怪的游戏 网络流/二分
查看>>
master + worker模式的node多核解决框架——node-cluster
查看>>
Android如何实现超级棒的沉浸式体验
查看>>
使用node打造自己的命令行工具方法教程
查看>>
Express代理中间件问题与解决方案
查看>>
||和&&返回什么?
查看>>
linux在文件中查找指定字符串,然后根据查找结果来做进一步的处理
查看>>
在Oracle中删除所有强制性外键约束
查看>>
【R】R语言使用命令行参数 - [编程技巧(Program Skill)]
查看>>
经典算法题每日演练——第二题 五家共井
查看>>
存储过程中拼接的变量和点的问题
查看>>