IOS 入門開發之建立標題列UINavigationBar的使用
雨松MOMO原創文章如轉載,請註明:轉載至我的獨立網域名稱部落格雨松MOMO程式研究院,原文地址:http://www.xuanyusong.com/archives/585
IOS 開發有關介面的東西不僅可以使用代碼來編寫,也可以使用Interface Builder視覺化檢視來編寫。今天有個朋友問我這兩個有什麼區別,首先說說IB ,使用它編輯出來的控制項其實底層還是調用代碼只是蘋果封裝出來讓開發人員更好使用而已。它的優點是方便、快捷最重要的是安全,因為控制項的釋放它會幫我們完成不用手動釋放。缺點是多人開發不好維護,就好比誰寫的IB誰能看懂,別人看的話就比較費勁,不利於代碼的維護。兩種方式各有利弊,不過我個人還是比較喜歡純程式碼,因為任何程式語言,或者任何指令碼語言,代碼和視覺化檢視比起來永遠是最底層的。
利用代碼在螢幕中添加一個標題列,並且在標題列左右兩方在添加兩個按鈕,點擊後響應這兩個按鈕。
這裡設定標題列的顯示範圍。
//建立一個導覽列 UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
有了標題列後,須要在標題列上添加一個集合Item用來放置 標題內容,按鈕等。
//建立一個導覽列集合 UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:nil];
在這個集合Item中添加標題,按鈕。
style:設定按鈕的風格,一共有3中選擇。
action:@selector:設定按鈕點擊事件。
//建立一個左邊按鈕 UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"左邊" style:UIBarButtonItemStyleBordered target:self action:@selector(clickLeftButton)]; //建立一個右邊按鈕 UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右邊" style:UIBarButtonItemStyleDone target:self action:@selector(clickRightButton)]; //設定導覽列內容 [navigationItem setTitle:@"雨松MOMO程式世界"];
將標題列中的內容全部添加到主視圖當中。
//把導覽列添加到視圖中 [self.view addSubview:navigationBar];
最後將控制項在記憶體中釋放掉,避免記憶體流失。
//釋放對象 [navigationItem release]; [leftButton release]; [rightButton release];
:添加這兩個按鈕的點擊響應事件。
-(void)clickLeftButton{ [self showDialog:@"點擊了導覽列左邊按鈕"]; }-(void)clickRightButton{ [self showDialog:@"點擊了導覽列右邊按鈕"]; }
點擊後開啟一個Dialog對話方塊,根據點擊不同的按鈕傳入不同的顯示內容。
-(void)showDialog:(NSString *) str{ UIAlertView * alert= [[UIAlertView alloc] initWithTitle:@"這是一個對話方塊" message:str delegate:self cancelButtonTitle:@"確定" otherButtonTitles: nil]; [alert show]; [alert release];}
最後貼上完整的代碼
#import "TitleViewController.h"@implementation TitleViewController- (void)didReceiveMemoryWarning{ // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use.}#pragma mark - View lifecycle// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.- (void)viewDidLoad{ [super viewDidLoad]; //建立一個導覽列 UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; //建立一個導覽列集合 UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:nil]; //建立一個左邊按鈕 UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"左邊" style:UIBarButtonItemStyleBordered target:self action:@selector(clickLeftButton)]; //建立一個右邊按鈕 UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"右邊" style:UIBarButtonItemStyleDone target:self action:@selector(clickRightButton)]; //設定導覽列內容 [navigationItem setTitle:@"雨松MOMO程式世界"]; //把導覽列集合添加入導覽列中,設定動畫關閉 [navigationBar pushNavigationItem:navigationItem animated:NO]; //把左右兩個按鈕添加入導覽列集合中 [navigationItem setLeftBarButtonItem:leftButton]; [navigationItem setRightBarButtonItem:rightButton]; //把導覽列添加到視圖中 [self.view addSubview:navigationBar]; //釋放對象 [navigationItem release]; [leftButton release]; [rightButton release];}-(void)clickLeftButton{ [self showDialog:@"點擊了導覽列左邊按鈕"]; }-(void)clickRightButton{ [self showDialog:@"點擊了導覽列右邊按鈕"]; }-(void)showDialog:(NSString *) str{ UIAlertView * alert= [[UIAlertView alloc] initWithTitle:@"這是一個對話方塊" message:str delegate:self cancelButtonTitle:@"確定" otherButtonTitles: nil]; [alert show]; [alert release];}- (void)viewDidUnload{ [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil;}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait);}@end
最後如果你還是覺得我寫的不夠詳細 看的不夠爽 不要緊我把原始碼的貼出來 歡迎大家一起討論學習雨松MOMO希望可以和大家一起進步。
:http://www.xuanyusong.com/archives/585