2012-12-16 67 views
1

任何人都可以告訴我爲什麼這段代碼不起作用嗎?將自定義按鈕添加到UINavigationItem LeftBarButtonItem

self.backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[self.backButton setImage:[UIImage imageNamed:@"back_arrow.png"] 
       forState:UIControlStateNormal]; 
self.backButton.contentMode = UIViewContentModeCenter; 
[self.backButton addTarget:self 
        action:@selector(backButtonAction:) 
      forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.backButton]; 
[navigationItem setLeftBarButtonItem:backButtonItem animated:NO]; 
navigationItem.hidesBackButton = YES; 

編輯:

沒有出現在leftBarButtonItem。那就是問題所在。

+0

怎麼不工作?你看到了什麼結果? – rdelmar

+0

什麼問題? leftButton沒有顯示或其他? – Atif

+0

您使用導航控制器嗎?你在哪裏使用該代碼? –

回答

2

從文檔:

「當創建自定義按鈕,其與按鈕的類型UIButtonTypeCustom-的幀被設置爲一個按鈕(0 ,0,0,0),在將按鈕添加到您的界面之前,您應該將幀更新爲更合適的值。「

所以,你應該看到的東西,如果你在第2行設置的框架,如:

self.backButton.frame = CGRectMake(0, 0, 40, 20); 
+0

我知道這是愚蠢的:)我沒有定義按鈕的框架。謝謝。 –

3

這應該工作

CGRect rect = CGRectMake(10, 0, 30, 30); 
self.backButton = [[UIButton alloc] initWithFrame:rect]; 
[self.backButton setImage:[UIImage imageNamed:@"back_arrow.png"] 
       forState:UIControlStateNormal]; 
self.backButton.contentMode = UIViewContentModeCenter; 
[self.backButton addTarget:self 
        action:@selector(backButtonAction:) 
      forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:self.backButton]; 
self.navigationItem.leftBarButtonItem = backButtonItem; 
self.navigationItem.hidesBackButton = YES; 
+0

我知道這是愚蠢的:)我沒有定義一個框架的按鈕。謝謝。 –

相關問題