0

这是代码:

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

我尝试了该代码,从块中移开,它可以工作,但是当我将其放入块中时,它不起作用。怎么了?谢谢。

4

2 回答 2

1

您将块本身分配给 leftBarButtonItem。您想要分配块的返回值,因此您必须通过将块#define 名称附加到 () 来调用它。

所以:

    self.navigationItem.leftBarButtonItem = kMenuIcon();
于 2013-09-09T04:35:57.917 回答
1

leftBarButtonItema UIBarButtonItem *,您正在分配一个块。

你为什么不简单地这样做:

UIBarButtonItem *menuIcon = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"more_icon"] style:UIBarButtonItemStylePlain target:self action:@selector(revealLeftSidebar:)];
self.navigationItem.leftBarButtonItem = menuIcon;
于 2013-09-09T01:42:06.593 回答