我用presentModalViewController
撥打了一個視圖。如何以編程方式添加NavigationBarItem和UIBarButtonItem?
我的新視圖沒有一個導航欄,所以我加了一個從庫,但現在,當我在我的控制器的viewDidLoad
創建UIBarButtonItem
,並將其設置爲navigationBarItem
的rightBarButtonItem
。
但是當我運行我的應用程序時,導航欄在那裏,但沒有按鈕。
我錯過了一個步驟或什麼?
我用presentModalViewController
撥打了一個視圖。如何以編程方式添加NavigationBarItem和UIBarButtonItem?
我的新視圖沒有一個導航欄,所以我加了一個從庫,但現在,當我在我的控制器的viewDidLoad
創建UIBarButtonItem
,並將其設置爲navigationBarItem
的rightBarButtonItem
。
但是當我運行我的應用程序時,導航欄在那裏,但沒有按鈕。
我錯過了一個步驟或什麼?
只需手動添加導航欄將不會使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
我想 的UIViewController navigationBarItem屬性是唯一的工作,如果你的視圖控制器存在與UINavigationController的
如果你添加一個導航欄與界面構建 或添加代碼,那麼你需要使用 - (空) pushNavigationItem:(UINavigationItem *)項的動畫:(BOOL)動畫
到UINavigationItem自己添加
您可以創建一個UINavigationController 使用 - (ID)initWithRootViewController:(UIViewController的*)yourViewController
,並使用presentModalViewController顯示的UINavigationController您創建
那麼你可以使用的UIViewController navigationBarItem屬性設置rightBarButtonItem在viewDidLoad中
其實這是比這更簡單:
拖動一個UINavigationBar的到你的應用程序。請注意,當你這樣做時,你也會得到一個UINavigationItem ...確保你保留它。
以下屬性添加到您的應用程序:
@property (weak, nonatomic) IBOutlet UINavigationItem *navigationItem;
的Xcode將可能指示錯誤(你將覆蓋內置的UIViewController屬性),所以你必須手動合成getter和二傳手。添加@implementation聲明下面的以下行的類:
@synthesize navigationItem;
在Interface Builder中,將來自新navigationItem屬性來定製導航項目的連接。
您現在可以使用self.navigationItem訪問您的導航項目,就像您通常一樣。