0

所以现在,我在故事板中有一个右栏按钮,连接到另一个视图控制器的 segue。所有功能在这里都可以正常工作。(没有代码,全部通过故事板完成)

现在,我正在连接到 webAPI 调用以查看是否需要更改图像。我有以下代码:

 if ( json.count == 0) {
   self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"notification.png"]]];
}
else
{
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"notification-new.png"]]];
}

所以这一切都很好,如果收到超过 1 个 json 数据,图像确实会改变。但是,按钮本身不会推送到新的视图控制器

4

2 回答 2

0

您已经创建了自定义按钮。所以现在你必须自己设置UIBarButtonItems 属性

@property(nonatomic)         SEL   action;     // default is NULL
@property(nonatomic,assign)  id    target;     // default is nil

我现在无法检查它,但可能以下应该有效:

UIBarButtonItem *originalRightButton = self.navigationItem.rightBarButtonItem;
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"notification-new.png"]]];
self.navigationItem.rightBarButtonItem.target = originalRightButton.target;
self.navigationItem.rightBarButtonItem.action = originalRightButton.action;
于 2014-03-13T07:32:06.343 回答
0

您可以设置自定义按钮及其操作和选择器

UIImage* image = [UIImage imageNamed:@"notification.png"];
UIButton *someButton = [[UIButton alloc] initWithImage:image];
[someButton setBackgroundImage:image forState:UIControlStateNormal];
[someButton addTarget:self action:@selector(method) 
                 forControlEvents:UIControlEventTouchUpInside];
[someButton setShowsTouchWhenHighlighted:YES];

UIBarButtonItem *rightBtn =[[UIBarButtonItem alloc] initWithCustomView:someButton];
self.navigationItem.rightBarButtonItem=rightBtn;

在按钮的目标中,您可以调用

[self performSegueWithIdentifier:@"yourSegueName" sender:self];. 

segue 必须在故事板中定义一个名称。

希望这可以帮助。

于 2014-03-13T07:48:44.690 回答