2014-04-04 89 views
1
-(void)setRightNavigationBarViewForUser 
{ 
UIBarButtonItem *spacer = [[UIBarButtonItem alloc] 
            initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace 
            target:nil action:nil]; 
spacer.width = 760; 
NSString *title = [VimondStore sessionManager].userName; 

UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 144, 44)]; 
tempView.backgroundColor = [UIColor clearColor]; 
UIImageView *tempImageView = [[UIImageView alloc] initWithFrame:CGRectMake(4, 0, 44, 44)]; 
tempImageView.image = [UIImage imageNamed:@"user.png"]; 

UILabel *tempLabel = [[UILabel alloc] initWithFrame:CGRectMake(44, 0, 80, 44)]; 
tempLabel.backgroundColor = [UIColor clearColor]; 
tempLabel.text = title; 
tempLabel.font = [UIFont boldSystemFontOfSize:14.0]; 
tempLabel.textColor = [UIColor whiteColor]; 
tempLabel.textAlignment = NSTextAlignmentLeft; 
tempLabel.adjustsFontSizeToFitWidth = YES; 
tempLabel.minimumScaleFactor = 0.8; 
[tempView addSubview:tempImageView]; 
[tempView addSubview:tempLabel]; 
UIBarButtonItem *userView = [[UIBarButtonItem alloc]initWithCustomView:tempView]; 
NSArray *items = @[spacer ,userView]; 
self.navigationTableViewController.navigationItem.rightBarButtonItems = items; 



} 


-(void)navigateToHome 
{ 
[self setRightNavigationBarViewForUser]; 
self.loginViewController = nil; 
[self showCenterPanelAnimated:YES]; 
[self setLeftBarButtonForDrawerTitle]; 
NSAssert([self.centreViewController isKindOfClass:[GGBaseViewController class]], @"Must be of GGBaseViewController class"); 
[GenreNavigator navigateToRoot:(GGBaseViewController*)self.centreViewController completionHandler:nil]; 

} 

我的代碼如上:我面對的問題是導航右欄按鈕項目在我導航到主頁時不可見。當我導航到其他頁面並返回時,它就會顯示。第一種方法用於創建正確的導航欄按鈕項目。導航欄右鍵欄按鈕項不可見

+0

檢查'self.navigationTableViewController.navigationItem'是否爲零。 – KudoCC

+0

@KudoCC感謝的人,但它不是零,如果它是零按鈕不應該出現從視圖返回。 –

+0

你最好在'self.centreViewController'的'viewWillAppear'方法中配置導航欄,或者嘗試將這一行'[self setRightNavigationBarViewForUser];'移動到方法'navigateToHome'的底部(確保你添加了項目在流行動作之後,也許它應該完成處理程序) – KudoCC

回答

1

從rightBarButtonItems上的Apple文檔中,您可以看到很可能您的自定義視圖太寬,而且您的按鈕因爲不適合而顯示不出來。測試使它變窄,看看它是否出現?

討論 此數組可以包含0個或更多個條形按鈕項目以顯示在導航欄的右側。項目以與數組中顯示的順序相同的順序從右到左顯示。因此,數組中的第一個項目是最右邊的項目,其他項目將添加到前一個項目的左側。

如果沒有足夠的空間顯示數組中的所有項目,那些與標題視圖(如果存在)重疊的項目或條形左側的按鈕不會顯示。

+0

參考https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationItem_Class/Reference/UINavigationItem.html#//apple_ref/doc/uid/TP40006933-CH3-SW15 – RobP

+0

當我從家中導航到任何其他地方時,它會出現,並且返回視圖是完美的,但我在第一次導航回家時並未出現。 –

+0

也許是因爲你導航回家後,你正在改變左邊的按鈕欄,並有更多的空間?正如我所說,儘量縮短項目以確認它是一個寬度問題。 – RobP