解决方案 »

  1.   

    这种做法和我们以前在NavigationItem上放置购物车图标一样
      

  2.   

    只是放个图标而不是按钮?logo?
      

  3.   

    [self.navigationController.view addSubview:self.shareNavleftView];
      

  4.   

    这个放个图标我能做出来,但是点击事件我暴露不出来,我自定义了一个UIBarButtonItem  ,然后里面放了一个UIImageView ,ImageView监听UITapGestureRecognizer点击事件 ,然后通过Delegate将事件暴露出去,但是在vc当中添加了,运行就出错
      

  5.   

    下面是YbrRightBarButtonItem.h#import <UIKit/UIKit.h>
    @class YbrRightBarButtonItem;@protocol YbrRightBarButtonItemDelegate <NSObject>
    @optional
    - (void)rightBarButtonClick:(YbrRightBarButtonItem *) rightBarBtn;
    @end@interface YbrRightBarButtonItem : UIBarButtonItem
    -(YbrRightBarButtonItem *) initWithName;
    @property (nonatomic, weak) id<YbrRightBarButtonItemDelegate> delegate;
    @endYbrRightBarButtonItem.m@implementation YbrRightBarButtonItem-(YbrRightBarButtonItem *) initWithName {
        UIImageView * myAnimatedView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"goTo"]];
        myAnimatedView.userInteractionEnabled = YES;
        UITapGestureRecognizer *singleTap =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(toPlay)];
        [myAnimatedView addGestureRecognizer:singleTap];
        
        UIBarButtonItem * right = [[UIBarButtonItem alloc] initWithCustomView:myAnimatedView];
        return (YbrRightBarButtonItem *)right;
    }-(void) toPlay {
        if ([self.delegate respondsToSelector:@selector(rightBarButtonClick:)]) {
            [self.delegate rightBarButtonClick:self];
        }
    }
    @end
    下面是VC.m
        YbrRightBarButtonItem *right = [[YbrRightBarButtonItem alloc] init];
        right = [right initWithName];
        right.delegate = self;
        self.navigationItem.rightBarButtonItem = right;
      

  6.   

    6楼是我的代码帮下忙看下哪里有问题
    VC.m应该是
        YbrRightBarButtonItem *right = [[YbrRightBarButtonItem alloc] initWithName];
        right.delegate = self;
        self.navigationItem.rightBarButtonItem = right;
      

  7.   

    因为right的实例根本不是YbrRightBarButtonItem,而是UIBarButtonItem,而UIBarButtonItem是没有delegate这个属性的
      

  8.   

    因为right的实例根本不是YbrRightBarButtonItem,而是UIBarButtonItem,而UIBarButtonItem是没有delegate这个属性的那应该怎么办呢???
      

  9.   

    其实你不用在imageView上放置手势识别器,你可以封装一个工具方法,这个方法返回一个构建好的UIBarButtonItem(上面显示一张图片),接下来分为两种方式:
    1. 如果这个item的点击都会导致不同的操作,即由VC决定item的事件,那你就在构建UIBarButtonItem的工具方法中加入两个参数,一个target,一个acction,由VC在调用工具方法时指定。
    2. 如果这个item的点击总是会进行相同的操作,那你就不用在工具方法中加入target和action参数,应由一个统一的对象来处理点击事件,例如AppDelegate。