2009-07-28 133 views
2

有誰知道如何將兩個系統按鈕添加到導航欄右上角?我知道自定義按鈕可以添加,我真的不明白爲什麼系統按鈕不能這樣做。導航工具欄右側兩個按鈕

我真的很需要它。我需要一個添加按鈕和一個編輯按鈕。

編輯以重新排序和刪除表格行。 添加以添加新行。

我不能使用底部的工具欄,因爲我有一個tabbar。

有人能幫我嗎?

回答

0

使用默認的導航欄,你只能有三個按鈕,除非我失去了一些東西。一個在左邊,一個在中心,另一個在右邊。即使你創建了一個更小的按鈕,並認爲你有足夠的空間,觸摸將全部註冊到相同的按鈕(無論哪個鏈接到右側或左側)。如果你想獲得谷歌的導航欄功能,我建議你自己實現它。這真的不會那麼困難,而且你會得到你想要的功能。如果你決定這樣做,我確定SO可以指導你處理困難的部分。

0

不知你會使用一個自定義視圖爲您UINavigationItem會發生什麼:

myViewController.navigationItem.titleView = myCustomView; 

我想象titleview的可能擴展一路的權利,如果你沒有一個按鈕那裏。我注意到如果沒有右鍵,標題文字會獲得更多的空間。

然後,您可以爲該自定義視圖添加一個標籤(用於標題)和兩個按鈕。

3

像這樣的東西應該工作(替換自己的圖像和操作方法):

#define ACTIONEDIT 0 
#define ACTIONADD 1 
... 
UISegmentedControl* segmentedControl = [[UISegmentedControl alloc] 
     initWithItems: [NSArray arrayWithObjects: 
     [UIImage imageNamed:@"icon-edit.png"], 
     [UIImage imageNamed:@"icon-add.png"], 
     nil] 
     ]; 
[segmentedControl addTarget:self 
        action:@selector(segmentAction:) 
      forControlEvents:UIControlEventValueChanged]; 

segmentedControl.frame = CGRectMake(0, 0, 90, 30); 
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
segmentedControl.momentary = YES; 
[segmentedControl setEnabled:YES forSegmentAtIndex:ACTIONEDIT]; 
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] 
         initWithCustomView:segmentedControl]; 

... 

- (void)segmentAction:(id)sender 
{ 
    UISegmentedControl* segCtl = sender; 
    int action = [segCtl selectedSegmentIndex]; 
    switch (action) { 
    case ACTIONADD: 
    [self addToList]; 
    break; 
    case ACTIONEDIT: 
    [self editList]; 
    break; 
    } 
}