OC学习之navigationController导航栏

来源:互联网 发布:weka数据挖掘教程 编辑:程序博客网 时间:2024/06/06 08:23
修改导航栏上Back
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] init];
backItem.title = @"返回";
BackBarButtonItem: backItem]; UIBarButtonItem *backIt
[self.navigationItem se
tem = [[UIBarButtonItem alloc] initWithTitle:@"嘿嘿"style:UIBarButtonItemStyleDone target:nil action:nil];
[self.navigationItem setBackBarButtonItem: backItem]; //自适应设置View高度
藏导航栏self.navigationController.navigationBar.hidden = NO;self.n
#define kDevieceHeight [UIScreen mainScreen].bounds.size.height //显示隐avigationItem.title = @"hello";//设置标题(更改back名字)self.navigationItem.hidesBackButton = YES;//取消back触摸屏幕以外的地方,取消键盘:
if (touch.tapCount >=1) { [_textView
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch=[[event allTouches] anyObject];resignFirstResponder]; }
}

IOS-导航栏风格

导航控制器可以用几种不同的风格来显示自身。默认风格就是标准的灰色外观。目前支持三种不同的风格。

风    格

描    述

UIBarStyleDefault

默认风格;灰色背景,白色文字

UIBarStyleBlack

纯黑色背景,白色文字

UIBarStyleBlackOpaque

纯黑色背景,白色文字        

UIBarStyleBlackTranslucent

透明黑色背景,白色文字

 

风格是通过barStyle属性来设置的。这个属性属于导航控制器,而不是视图控制器,因此在各个视图之间来回切换时,此属性可以保持一致:

self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 

IOS中原文档如下:

UIBarStyle
Defines the stylistic appearance of different types of views.
typedef enum { UIBarStyleDefault = 0,
BlackOpaque = 1, // Deprecated
UIBarStyleBlack = 1, UIBarStyle UIBarStyleBlackTranslucent = 2, // Deprecated} UIBarStyle;Constants
iew. For example,
UIBarStyleDefaultUse the default style normally associated with the given v search bars and tool bars typically use a blue gradient background.
eBlackUse an opaque black styl
Available in iOS 2.0 and later.Declared in UIInterface.h.UIBarStyle.Available in iOS 3.0 and later.Declared in UIInterface.h.UIBarStyleBlackOpaque
Interface.h.UIBarStyleBlackTranslucen
Deprecated. Use UIBarStyleBlack instead.Available in iOS 2.0 and later.Declared in UItDeprecated. Use UIBarStyleBlack and set the translucent property to YES instead.Available in iOS 2.0 and later.
Declared in UIInterface.h.





本文是使用纯代码实现一个导航栏的效果。单击按钮并且产生事件。基本思路是:

1.创建一个导航栏(UINavigationBar对象)

2.创建一个导航栏集合(UINavigationItem对象)

3.创建一个左边按钮、一个右边按钮(UIBarButtonItem对象),并实现对应的事件方法

4.将导航栏集合添加到导航栏中,设置动画关闭

5.把左右两个按钮添加到导航栏集合中去

6.在视图中显示当前创建的导航栏


具体的实现代码如下:

delegate代码

.h文件:

#import <UIKit/UIKit.h> 

#import "ZYRootViewController.h" 

@interface ZYAppDelegate : UIResponder <UIApplicationDelegate> 

@property (strong, nonatomic) UIWindow *window;

@property(nonatomic,strong) ZYRootViewController *zYRootViewController; 

@property(nonatomic,strong) UINavigationController *navigationController; 

@end 

.m文件:

@synthesize navigationController; 

@synthesize zYRootViewController; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch. 

self.window.backgroundColor = [UIColor whiteColor]; 

[self.window makeKeyAndVisible]; 

self.zYRootViewController = [[ZYRootViewController alloc] initWithNibName:nil bundle:nil];

//实例化导航栏

self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.zYRootViewController]; 

//向当前视图添加导航栏 

self.window.rootViewController = self.navigationController;

//    [self.window addSubview:self.navigationController.view]; 

return YES; 

ZYRootViewController代码

.m文件:

- (void)viewDidLoad 

 [super viewDidLoad]; 

// Do any additional setup after loading the view. 

self.title = @"First";//设置标题 

 [self performSelector:@selector(pushSecondController) withObject:nil afterDelay:3.0f];//3秒后调用自身pushSecondController方法

-(void)pushSecondController{ 

ZYSecondViewController *zYSecondViewController = [[ZYSecondViewController alloc] initWithNibName:nil bundle:nil]; 

[self.navigationController pushViewController:zYSecondViewController animated:YES];//向导航栏堆栈推入zYSecondViewController视图 

- (void)viewDidLoad

{

[super viewDidLoad];

// Do any additional setup after loading the view.

 self.title = @"First";//设置标题

[self performSelector:@selector(pushSecondController) withObject:nil afterDelay:3.0f];//3秒后调用自身pushSecondController方法

}

-(void)pushSecondController{

ZYSecondViewController *zYSecondViewController = [[ZYSecondViewController alloc] initWithNibName:nil bundle:nil];

 [self.navigationController pushViewController:zYSecondViewController animated:YES];//向导航栏堆栈推入zYSecondViewController视图

}

ZYSecondViewController代码

.m文件:

- (void)viewDidLoad 

 [super viewDidLoad]; 

self.title = @"Second"; 

// Do any additional setup after loading the view.

[self performSelector:@selector(goBack) withObject:nil afterDelay:3.0f];//3秒后调用自身goBack方法

-(void)goBack{ 

[self.navigationController popViewControllerAnimated:YES];//将自身视图弹出导航栏堆栈 

- (void)viewDidLoad

{

[super viewDidLoad];

self.title = @"Second";

// Do any additional setup after loading the view.

 [self performSelector:@selector(goBack) withObject:nil afterDelay:3.0f];//3秒后调用自身goBack方法

}

-(void)goBack{

[self.navigationController popViewControllerAnimated:YES];//将自身视图弹出导航栏堆栈

}运行结果:

最初的效果

/

3秒以后跳到第二个视图:

 /

又3秒以后弹出本视图,显示初始视图:

 /



原创粉丝点击