2014-03-13 72 views
1

我試圖以編程方式將UIButtonBarItem添加到UINavigationBar。我有這個類的頂欄,這對我的一些ViewControllers的,然後導入調用由:[self.view addSubview:[Topbar insertTopbar]];以編程方式將UIButtonBarItem添加到UINavigationBar

#import "Topbar.h" 

@implementation Topbar 

+(UINavigationBar*)insertTopbar 
{ 
    UINavigationBar *navBar = [ [UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 

    UINavigationItem *navTitle = [UINavigationItem alloc]; 
    navTitle.title = @"MyApp"; 

    UINavigationItem *navAdd = [UINavigationItem alloc]; 
    navAdd.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(addFood)]; 

    [navBar setItems:@[navAdd, navTitle] animated:false]; 
    return navBar; 
} 

@end 

但是,當我嘗試設置使用navBar setItems:@[navAdd, navTitle]它的廣告「上一步」的項目 - 按鈕 enter image description here

如果我然後忽略navTitle所以它讀取navBar setItems:@[navAdd],突然出現「+」號。看起來這個「navTitle」推入了第一個項目。 enter image description here

+0

你試過'self.navigationItem.hidesBackButton = YES;'?這看起來像是因爲推送視圖控制器而發生的默認回退。可能如果你隱藏它,你會得到你的+。 –

+0

我試着將它添加到視圖控制器,添加NavigationBar後(如http://cl.ly/image/0l3a111q260z),並沒有任何反應,仍然討厭的後退按鈕 –

+0

添加'self.navigationItem.hidesBackButton = YES; '給你的viewController的' - (void)viewWillAppear'方法。後退按鈕沒有從導航欄顯示,它來自NavigationController的導航欄。 – Srikanth

回答

1

嘗試下面的方法,做了一些tweeks,現在正在爲我工​​作好! :)

enter image description here

-(UINavigationBar*)insertTopbar 
{ 
UINavigationBar *navBar = [ [UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
UINavigationItem *navAdd = [UINavigationItem alloc]; 
navAdd.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target:self action:@selector(addFood)]; 
[navBar pushNavigationItem:navAdd animated:YES]; 
navBar.topItem.title = @"MyApp"; 
return navBar; 
} 
+0

它完美的作品!謝謝!問題是試圖添加多個'UINavigationItem'而不是多個按鈕! –

相關問題