0

所以现在,我有一个正确的酒吧按钮在故事板上连接到另一个视图控制器。所有的功能在这里工作得很好。 (没有代码,全部通过故事板完成)如何更改'JUST'导航右栏按钮图像?

现在,我正在连接到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数据不会改变。但是,按钮本身不会推送到新视图控制器

回答

0

您已创建自定义按钮。所以,现在你必须设置UIBarButtonItem的属性自己

@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; 
+0

我已更新答案。你能重新检查一下吗? – Avt

+0

嗨,我已经实施了你所做的。它不工作,但我认为这是因为我不理解行动和目标概念。 – user3178926

+0

我的原始按钮被称为goNotifications,声明为我的.h文件中的一个属性。所以我在这个评论下实现了下面的代码。 – user3178926

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必须在故事板中用名字定义。

希望这会有所帮助。

相关问题