OC学习之navigationController导航栏

修改导航栏上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, UIBarStyl e UIBarStyleBlackTranslucent = 2, // Deprecated } UIBarStyle; Constants
iew. For example,
UIBarStyleDefault Use the default style normally associated with the given v search bars and tool bars typically use a blue gradient background.
eBlack Use an opaque black styl
Available in iOS 2.0 and later. Declared in UIInterface.h. UIBarSty le. 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 U It Deprecated. 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秒以后弹出本视图,显示初始视图:

 /



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值