zoukankan      html  css  js  c++  java
  • 添加类似navigationController自带的返回按钮

    添加类似navigationController自带的返回按钮,效果如下:

    左箭头的返回按钮

    一、UINavigationcontroller自带的navigationBar 是无法添加左箭头的返回按钮的

    在网上搜索了一下 但是真的有方法可以添加成功,但是前提是该 navigationBar不是NavigationController自带的。

    如果是自带的navigationBar就无法添加成功,会出现

    [csharp] view plaincopy
    1. Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Cannot call setItems:animated: directly on a UINavigationBar managed by a controller.'  


    这样的错误,意思就是“ 苹果不允许 直接对受一个Controller控制的naviBar 进行 setItems操作”, 仔细一查,真的有这样的规定

    navigationController的属性naviBar

    "The navigation bar managed by the controller. Pushing, popping or setting navigation items on a managed navigation bar is not supported."

    意思很明确了: 这个naviBar是受controller管理的,不支持Pushing, popping or setting navigation items操作。

    看到这儿,我也很无语了,所以只好自己切图了,切出左箭头的样式来添加leftBarButtonItem 了。

    二、单独的UINavigationBar添加左箭头的返回按钮

    但是还是贴出来,单独的一个NavigationBar怎么添加 左箭头的返回按钮代码,这段代码想必看了很多次了吧,哈哈,不厌其烦的在贴一遍好了

    [csharp] view plaincopy
    1.     UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@""];  
    2.     [self.naviBar pushNavigationItem:navigationItem animated:NO];  
    3.     self.naviBar.delegate = self;  
    4.  //创建一个右边按钮  
    5.     UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右边"  
    6.                                                                     style:UIBarButtonItemStyleDone  
    7.                                                                    target:self  
    8.                                                                    action:@selector(clickRightButton)];  
    9. [navigationItem setRightBarButtonItem:rightButton];  
    10.     [navigationItem setTitle:@"我的页面"];  
    11.     UINavigationItem *item = [self.naviBar.items objectAtIndex:0];  
    12.     [self.naviBar pushNavigationItem:item animated:YES];  
    13.     UINavigationItem *back = [[UINavigationItem alloc] initWithTitle:@"Back"];  
    14.     NSArray *items = [[NSArray alloc] initWithObjects:back,item,nil];  
    15.     [self.naviBar setItems:items animated:NO];  

     

    如何捕获左箭头返回按钮的事件呢? 你需要去实现 UINavigationBarDelegate 协议里面的方法。

     

    [csharp] view plaincopy
    1. - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item  
    2. {  
    3.     //在此处添加点击back按钮之后的操作代码  
    4.     NSLog(@"aaaaaaaaaaaaa");  
    5.     return FALSE;  
    6. }  


    最后贴出运行的效果图

    naviBar添加左箭头的返回按钮

  • 相关阅读:
    图像检索(image retrieval)- 11
    图像检索(image retrieval)- 10相关
    Mock.js简易教程,脱离后端独立开发,实现增删改查功能
    Azure Monitor (3) 对虚拟机磁盘设置自定义监控
    Azure Monitor (1) 概述
    Azure SQL Managed Instance (2) 备份SQL MI
    Azure Virtual Network (17) Private Link演示
    Azure Virtual Network (16) Private Link
    Azure Virtual Network (15) Service Endpoint演示
    Azure Virtual Network (14) Service Endpoint服务终结点
  • 原文地址:https://www.cnblogs.com/ygm900/p/3830741.html
Copyright © 2011-2022 走看看