以下是代码:
self.navigationItem.leftBarButtonItem = kMenuIcon;
这是我的kMenuIcon:
#define kMenuIcon ^{UIBarButtonItem *menuIcon = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"more_icon"] style:UIBarButtonItemStylePlain target:self action:@selector(revealLeftSidebar:)]; return menuIcon;};
但它返回unrecognized selector
这样的错误:
- [ NSStackBlock isSystemItem]:无法识别的选择器发送到实例0xbfffd4b8 2013-09-09 11:30:57.788 Sircle [33182:c07]未捕获 异常: - [ NSStackBlock isSystemItem]:无法识别的选择器 发送到实例0xbfffd4b8
我尝试了这个代码,离开了块,它可以工作,但是当我把它放在块中时,它没有。出了什么问题?感谢。
答案 0 :(得分:1)
leftBarButtonItem
是UIBarButtonItem *
,您正在指定一个区块。
你为什么不这样做:
UIBarButtonItem *menuIcon = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"more_icon"] style:UIBarButtonItemStylePlain target:self action:@selector(revealLeftSidebar:)];
self.navigationItem.leftBarButtonItem = menuIcon;
答案 1 :(得分:1)
您将块本身分配给leftBarButtonItem。您想要分配块的 return 值,因此必须通过将#define name添加到()来调用它。
所以:
self.navigationItem.leftBarButtonItem = kMenuIcon();