zoukankan      html  css  js  c++  java
  • 导航栏返回按钮

    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,

    self.navigationItem.backBarButtonItem     在A界面设置了  ,从B界面返回后会调用

    self.navigationController.navigationItem.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,一般情况下没有这样的嵌套。

    分享请注明出处:objs-张渝的原创博客

     
  • 相关阅读:
    从技术走向管理
    一位大龄程序员所经历的面试的历炼和思考
    从技术谈到管理,把系统优化的技术用到企业管理
    Xamarin.iOS 开发 1通过“与 Mac 配对”进行 Xamarin.iOS 开发
    net 开源工作流比较及应用
    net core体系-UWP
    net 架构-5 ABP框架的Web API调用类在Winform项目中的使用
    net 架构-4ABP框架的Web API调用类的封装和使用
    MVC后台的几种跳转方法
    sqlserver存储过程杀掉数据库中死锁
  • 原文地址:https://www.cnblogs.com/yeng/p/5864161.html
Copyright © 2011-2022 走看看