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添加左箭头的返回按钮

  • 相关阅读:
    Core Animation 文档翻译—附录C(KVC扩展)
    Core Animation 文档翻译—附录B(可动画的属性)
    Core Animation 文档翻译—附录A(Layer样貌相关属性动画)
    Core Animation 文档翻译 (第八篇)—提高动画的性能
    Core Animation 文档翻译 (第七篇)—改变Layer的默认动画
    Core Animation 文档翻译 (第六篇)—高级动画技巧
    Core Animation 文档翻译 (第五篇)—构建Layer的层次结构
    用Markdown快速排版一片文章
    Core Animation 文档翻译 (第四篇)—让Layer的content动画起来
    Core Animation 文档翻译(第三篇)—设置Layer对象
  • 原文地址:https://www.cnblogs.com/ygm900/p/3830741.html
Copyright © 2011-2022 走看看