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

希望這會有所幫助。

相關問題