你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS UINavigationController總結

iOS UINavigationController總結

編輯:關於IOS

UINavigationController通過棧來實現。添加一個Controller為入棧,釋放一個Controller為出棧。復習下棧: 1。棧是先進後出 2。棧頂是最後一個入棧的對象 3。基棧是是第一個入棧的對象(棧底)
UINavigationController經常使用的函數: (1)- (id)initWithRootViewController:(UIViewController *)rootViewController 添加根視圖控制器,最先顯示。 (2)- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; Controller入棧操作 (3)- (UIViewController *)popViewControllerAnimated:(BOOL)animated; Controller出棧操作 這裡要注意:每次push Controller後,Controller系統返回按鈕實現pop這個Controller。
UINavigationBar按鈕 (1)用戶自定義按鈕

//定義UINavigationBar左右按鈕

self.iCityBarButton = [[UIBarButtonItem alloc] initWithTitle:@"北京"style:UIBarButtonItemStylePlain target:self action:@selector(selectCityButtonPressed)];

self.navigationItem.leftBarButtonItem = self.iCityBarButton;

self.navigationItem.rightBarButtonItem = self.iCityBarButton;

//定義系統樣式的返回按鈕 1。返回按鈕title為“返回”,方法1: 假如有2個Controller,為A,B。 如果從A push 到B,可以在push的函數中self.B.title = @"返回"。 在B的viewWillAppear中再把title改回來。不過我不推薦這種方法,感覺很麻煩。 2。

//修改下一個controller後退按鈕名稱

self.navigationItem.backBarButtonItem= [[UIBarButtonItem alloc]initWithTitle:@"返回"style:UIBarButtonItemStylePlain target:self action:nil];

感覺還是這種方法比較好。
(2)UINavigationBar顏色設置 1。Bar的背景設置 思路:通過自定義UINavigationBar的類別,重畫UINavigationBar,將一張picture畫上去。 具體做法: 定義一個UINavigationBar類別,重寫draw方法繪制picture。 在類別中定義class類,返回類別名稱。 定義類別名稱類,在draw方法中調用UINavigationBar的繪制方法。 代碼如下:

#import

@interface MyUINavigationBar : UINavigationBar

- (void) drawRect:(CGRect)rect;

@end

@interface UINavigationBar (LazyNavigationBar)

- (void)drawRect:(CGRect)rect;

@end

#import "MyUINavigationBar.h"

@implementation MyUINavigationBar

- (void)drawRect:(CGRect)rect

{

[super drawRect:rect];

}

@end

@implementation UINavigationBar (LazyNavigationBar)

+ (Class)class

{

//使用NSClassFromString進行不確定的類的初始化

return NSClassFromString(@"MyUINavigationBar");

}

-(void)drawRect:(CGRect)rect

{

UIImage *backImage = [UIImage imageNamed:@"bg_1x44.png"];

[backImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];

}

@end

實際上在SDK5.0之後,有個方法一句話搞定,不過在4.3模擬器下是不支持的。 代碼如下: [self.navigationController.navigationBar setBackgroundImage: image forBarMetrics:UIBarMetricsDefault]; 2.Bar上按鈕顏色設置 (1)[[UIBarButtonItem alloc] initWithCustomView:Button]; 這種方法可以自定義按鈕,如果需求要求做系統的,就別用這個方法了,考驗美工。 (2) [self.navigationController.navigationBar setTintColor:[UIColor colorWithRed:(float)1/255green:(float)98/255 blue:(float)161/255 alpha:1.0]];

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved