IOS统一标题栏的右侧按钮 ios 统一 导航栏IOSqq音乐导航栏统一 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种做法和我们以前在NavigationItem上放置购物车图标一样 只是放个图标而不是按钮?logo? [self.navigationController.view addSubview:self.shareNavleftView]; 这个放个图标我能做出来,但是点击事件我暴露不出来,我自定义了一个UIBarButtonItem ,然后里面放了一个UIImageView ,ImageView监听UITapGestureRecognizer点击事件 ,然后通过Delegate将事件暴露出去,但是在vc当中添加了,运行就出错 下面是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楼是我的代码帮下忙看下哪里有问题VC.m应该是 YbrRightBarButtonItem *right = [[YbrRightBarButtonItem alloc] initWithName]; right.delegate = self; self.navigationItem.rightBarButtonItem = right; 因为right的实例根本不是YbrRightBarButtonItem,而是UIBarButtonItem,而UIBarButtonItem是没有delegate这个属性的 因为right的实例根本不是YbrRightBarButtonItem,而是UIBarButtonItem,而UIBarButtonItem是没有delegate这个属性的那应该怎么办呢??? 其实你不用在imageView上放置手势识别器,你可以封装一个工具方法,这个方法返回一个构建好的UIBarButtonItem(上面显示一张图片),接下来分为两种方式:1. 如果这个item的点击都会导致不同的操作,即由VC决定item的事件,那你就在构建UIBarButtonItem的工具方法中加入两个参数,一个target,一个acction,由VC在调用工具方法时指定。2. 如果这个item的点击总是会进行相同的操作,那你就不用在工具方法中加入target和action参数,应由一个统一的对象来处理点击事件,例如AppDelegate。 求XCode4.32的入门教程(中文) 苹果有提供让我获知玩家以前是否安装过我的app的接口么? IOS游戏开发game center中GKPlayer 求IPhone上的录音代码 大家好,在下准备学习iPhone,有朋友推荐一下入门书籍和编程环境设置吗? 关于object C的问题,求了解,谢谢 objective-c如何自定义函数 IOS统一标题栏的右侧按钮 IOS7如何刷回IOS6? 求Xcode4.1或者4.6版本 Swift中NSURL转码问题 我日你妈,我自己上传的资源,还不让我下载,还要满足资源积分
@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;
VC.m应该是
YbrRightBarButtonItem *right = [[YbrRightBarButtonItem alloc] initWithName];
right.delegate = self;
self.navigationItem.rightBarButtonItem = right;
1. 如果这个item的点击都会导致不同的操作,即由VC决定item的事件,那你就在构建UIBarButtonItem的工具方法中加入两个参数,一个target,一个acction,由VC在调用工具方法时指定。
2. 如果这个item的点击总是会进行相同的操作,那你就不用在工具方法中加入target和action参数,应由一个统一的对象来处理点击事件,例如AppDelegate。