2011-12-16 56 views
0

我用presentModalViewController撥打了一個視圖。如何以編程方式添加NavigationBarItem和UIBarButtonItem?

我的新視圖沒有一個導航欄,所以我加了一個從庫,但現在,當我在我的控制器的viewDidLoad創建UIBarButtonItem,並將其設置爲navigationBarItemrightBarButtonItem

但是當我運行我的應用程序時,導航欄在那裏,但沒有按鈕。

我錯過了一個步驟或什麼?

回答

0

只需手動添加導航欄將不會使self.navigationController屬性爲實際值,其值爲nil,我相信這是您用來添加UIBarButtonItem實例的值。

我建議你在你的控制器申報UINavigationBar IBOutlet中,它在NIB編輯與您添加導航欄連接並在viewDidLoad使用像後:

@interface ... 
@property (nonatomic, retain) IBOutlet UINavigationBar *theBar; 
@end 

@implementation ... 
@synthesize theBar; 

-(void)viewDidLoad { 
    [super viewDidLoad]; 

    UIBarButtonItem *yourButton = ...; 

    UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"MyTitle"]; 
    item.rightBarButtonItem = yourButton; 

    [theBar pushNavigationItem: item animated:NO]; 
    [item release]; 

    ... 
} 

@end 
0

我想 的UIViewController navigationBarItem屬性是唯一的工作,如果你的視圖控制器存在與UINavigationController的

如果你添加一個導航欄與界面構建 或添加代碼,那麼你需要使用 - (空) pushNavigationItem:(UINavigationItem *)項的動畫:(BOOL)動畫

到UINavigationItem自己添加

您可以創建一個UINavigationController 使用 - (ID)initWithRootViewController:(UIViewController的*)yourViewController

,並使用presentModalViewController顯示的UINavigationController您創建

那麼你可以使用的UIViewController navigationBarItem屬性設置rightBarButtonItem在viewDidLoad中

0

其實這是比這更簡單:

  1. 拖動一個UINavigationBar的到你的應用程序。請注意,當你這樣做時,你也會得到一個UINavigationItem ...確保你保留它。

  2. 以下屬性添加到您的應用程序:

    @property (weak, nonatomic) IBOutlet UINavigationItem *navigationItem;

  3. 的Xcode將可能指示錯誤(你將覆蓋內置的UIViewController屬性),所以你必須手動合成getter和二傳手。添加@implementation聲明下面的以下行的類:

    @synthesize navigationItem;

  4. 在Interface Builder中,將來自新navigationItem屬性來定製導航項目的連接。

您現在可以使用self.navigationItem訪問您的導航項目,就像您通常一樣。

相關問題