2013-12-12 78 views
1

我將代碼添加到ViewController的viewDidLoad方法中。我有兩個UIBarButtonItem,其中一個在左邊叫做Left,另一個在右邊叫Right。我可以讓左邊的按鈕工作,但我甚至看不到正確的按鈕。我究竟做錯了什麼?如何以編程方式添加兩個UIBarButtonItem的UINavigationBar?

UINavigationBar *navbar = [[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, 420,   44)]; 
[navbar setBackgroundImage:[UIImage imageNamed:@"bg_fade.png"]  forBarMetrics:UIBarMetricsDefault]; 
UINavigationItem *item = [[UINavigationItem alloc]initWithTitle:@"Tray Tracker"]; 
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]initWithTitle:@"Left" style:UIBarButtonItemStylePlain target:self action: 
          @selector(leftAction:)]; 
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc]initWithTitle:@"Right" style:UIBarButtonItemStylePlain target:self action: 
           @selector(saveAction:)]; 
item.leftBarButtonItem = leftButton; 
item.rightBarButtonItem = rightButton; 
navbar.items = @[item]; 
[self.view addSubview:navbar]; 

我確實有leftAction和saveAction

swcreenshot http://imageshack.com/a/img560/5706/skve.png

回答

1

的IBActions如果你只是想有兩個按鈕的那一欄,你應該使用一個UIToolbar代替。處理這個簡單的案例要容易得多。您需要做的唯一更改就是創建一個UIBarButtonItem flexibleSpace(這是一個系統項目),並致電[toolbar setItems:@[leftButton, flexibleSpace, rightButton]];

如果您需要實際的導航功能,例如後退按鈕,請查看此答案。你需要使用UINavigationBar pushNavigationItem。

using UINavigationBar without UINavigationController

在你的榜樣,你是濫用項目屬性。對於UINavigationBar的狀態的文檔,

The bottom item is at index 0, the back item is at index n-2, 
and the top item is at index n-1, where n is the number of items in the array. 

爲了做到完成你想用UINavigationBar的做什麼,我認爲你需要多navigationItems。

使用UIToolbar或將UINavigationBar與UINavigationController結合使用會更容易。

編輯 既然您發佈了圖片,我認爲您看不到正確的欄按鈕的原因是因爲您的框架寬度太大。 iPhone的屏幕是320像素寬,所以你的導航欄的框架應該是CGRectMake(0,0,320,44)

+0

我以前使用過UIToolbar,它工作的很棒。我將研究UINavigationController。 – Pramesh

+0

查看我的編輯。我認爲你的問題僅僅是酒吧框架 – adamF

+0

這是做到了。接得好 – Pramesh

相關問題