为什么我不能使用块来添加leftBarButtonItem

时间:2013-09-09 01:34:40

标签: ios objective-c block

以下是代码:

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

我尝试了这个代码,离开了块,它可以工作,但是当我把它放在块中时,它没有。出了什么问题?感谢。

2 个答案:

答案 0 :(得分:1)

leftBarButtonItemUIBarButtonItem *,您正在指定一个区块。

你为什么不这样做:

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();