如何设置backBarButtonItem的title和action

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

首先我们得了解一下

backBarButtonItem(其中当text属性太长时就会显示失败)

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)UINavigationItem *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,一般情况下没有这样的嵌套。

时间: 2024-10-31 11:47:01

如何设置backBarButtonItem的title和action的相关文章

iOS中设置backBarButtonItem的title和action

一. 设置title 在需要显示该返回键的前一个Controller中设置: 1: navigationItem.backBarButtonItem = UIBarButtonItem(title: "注销", style: UIBarButtonItemStyle.Plain, target: nil, action: nil) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: co

修改系统默认的backBarButtonItem的title和action

1.为什么在UIViewController内设置了self.navigationItem.backBarButtonItem 对于导航栏显示的backBarButtonItem不起任何作用? 首先我们得了解一下 backBarButtonItem leftBarButtonItem rightBarButtonItem 他们都属于UINavigationItem的组成部分,都显示在navigationBar上,都属于UIBarButtonItem类 backBarButtonItem和另外两兄

Android 自定义title 之Action Bar

Android 自定义title 之Action Bar 2014-06-29  飞鹰飞龙...  摘自 博客园  阅 10519  转 25 转藏到我的图书馆 微信分享: Action Bar是在窗口上指示用户位置的组件,同时给用户提供导航和操作.使用Action Bar可以让你的应用在不同配置的屏幕上看起来比较一致.在开始之前,先了解一些相关的术语: Action Bar有以下几项关键功能: 1)为你的App提供一个装饰处,同时也可以让用户知道自己的所在位置: 2)让一些重要的操作以一种可预

android 24 设置与桌面相同的action和category

设置与桌面相同的action和category 安卓系统桌面也是一个activity,安卓桌面的action和category是: <activity android:name="com.sxt.day04_07_twoaction.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.int

ios7 关于searchbar上设置cancelButton的title属性

通过 [searchBarsetShowsCancelButton:YES];设置之后默认是"cancel",想改为中文的 在stackoverflow上参考了很多方法都没用 这里的关键是要获取到 searchbar中得 cancelButton 通过打印 [searchbar subviews] 得到结果如下 (lldb) po [searchBar subviews] <__NSArrayM 0xd6b0db0>( <UIView: 0xd6aab30; fram

使用V7包后,设置ActionBar的title等的属性

最新在做一个项目,既要支持低版本的ActionBar,又要能设置ActionBar的背景,及title的颜色. 使用V7包后,Activity只能设置固定的三个Theme. @style/Theme.AppCompat , @style/Theme.AppCompat.Light., @style/Theme.AppCompat.Light.DarkActionBar 如果,此时,我加了一个绿色的ActionBar的背景,又想title的颜色是白色. int titleId = Resource

Vue设置页面的title

原文地址:http://www.cnblogs.com/JimmyBright/p/7410771.html 前端框架如Vue.React等都是单页面的应用,也就是说整个web站点其实都是一个index页面,所谓的页面跳转都是替换index.html里边的内容,而页面的title是在每个页面初始化的时候才设置一次.对于现在的前端框架,传统的每个页面设置title标签的做法是不行的. 下面是在Vue框架下,利用路由来设置title的思路,当然还有别的方法. 先看项目目录 router的index.

动态设置html的title

使用vue前端框架做,竟然丢弃了很多javascript和html的东西了..动态设置title的方法: 1.使用vue的自定义指令 <div v-title>{{htmltitle}}</div> ... directives: { title: { inserted: function (el, binding) { document.title = el.innerText el.remove() } } } 2.很简单 // 设置html title document.ti

.Net语言 APP开发平台——Smobiler学习日志:如何设置页面的title

1.修改Mobile Form的TitleText的属性 输入需要显示标题,如图1: 2.修改Mobile Form的TitleStyle属性 其中包括Image属性(窗体图标).BackColor属性(窗口标题栏背景色).TextColor属性(窗口标题栏文本颜色)和TextAlign属性(窗体标题栏文本水平方向),如图2: a.Image属性(TitleImage) 设置窗体图标,将Image属性设置为"coms"如图3.图4: 图1 图2 图3 图4 b.BackColor属性