ios UINavigationController


UINaviGationController通常被我們稱為導航欄,他是視圖與視圖之間聯系溝通的橋梁,一些著名的app都用到了他。下面我們來看一下如何建立一個navigation。

首先,我們通常新建工程是直接將視圖控制器添加到window上,而現在有navigation以后,就多了一層:

     Appdelegete.h: 

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
  4.     // Override point for customization after application launch.  
  5.     self.window.backgroundColor = [UIColor whiteColor];  
  6.     RootViewController *root = [[RootViewController alloc]init];  
  7.     UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:root];//先將root添加在navigation上  
  8.     [_window setRootViewController:nav];//navigation加在window上  
  9.       
  10.     [nav release];  
  11.     [root release];  
  12.       
  13.     [self.window makeKeyAndVisible];  
  14.     return YES;  
  15. }  

這樣我們的navigation就加載上去了。下面我們來設置navigation的屬性:

  

  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     // Do any additional setup after loading the view.  
  5.     [self.navigationController.navigationBar setTranslucent:NO];//設置navigationbar的半透明  
  6.     self.title = @"navigationcontroller";//設置navigationbar上顯示的標題  
  7.     [self.navigationController.navigationBar setBarTintColor:[UIColor purpleColor]];//設置navigationbar的顏色  
  8.     self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonItemStyleDone target:self action:Nil];//設置navigationbar左邊按鈕  
  9.     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonItemStylePlain target:self action:Nil];//設置navigationbar右邊按鈕  
  10.     [self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];//設置navigationbar上左右按鈕字體顏色  
  11. }  


效果圖如下:

 

這里還有一個屬性常用,就是: 

  1. NSArray *arr = [NSArray arrayWithObjects:@"1",@"2", nil nil];  
  2.     UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:arr];  
  3.     self.navigationItem.titleView = segment;//設置navigation上的titleview  


效果如下:

 

對,我們看到中間的字變成了兩個可選的按鈕,這就是navigation的另一個屬性:navigationitem.titleview。

下面我們再建立一個視圖,看一下兩個視圖之前是怎樣通信的。

在第二個視圖中,我添加了一個button來顯示,並加了一個成員變量來接收從第一個視圖中穿過來的值:

 

  1. @interface SecondViewController : UIViewController  
  2. @property (copy,nonatomicNSString *str;  
  3. @end  

 

  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     // Do any additional setup after loading the view.  
  5.     self.title = @"second";  
  6.     UIButton *aBUTTON = [[UIButton alloc]initWithFrame:CGRectMake(30305030)];  
  7.     [aBUTTON setTitle:_str forState:UIControlStateNormal];  
  8.     [aBUTTON addTarget:self action:@selector(clicked) forControlEvents:UIControlEventTouchUpInside];  
  9.     [self.view addSubview:aBUTTON];  
  10. }  


然后我將第一個視圖的右邊按鈕添加一個事件,點擊按鈕,就會推出第二個視圖,並顯示我們傳過來的值:

  

  1. - (void)clicked{  
  2.     SecondViewController *second = [[SecondViewController alloc]init];  
  3.     [self.navigationController pushViewController:second animated:YES];  
  4.     second.str = @"hello!!";  
  5.     [second release];  
  6. }  


下面,我們來運行一下:

 

點進按鈕以后,我們的第二個視圖推出,button顯示了傳過來的值。

然后我們點擊回button,還有navigation另外一個方法: 

  1. - (void)clicked{  
  2.     [self.navigationController popViewControllerAnimated:YES];  
  3. }  


這樣就可以回到第一個視圖。

 

 

uinavigationcontroller的一些簡單的屬性就先說到這里,歡迎留言補充,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM