IOS导航栏的简单用法以及自定义实现例程

原创 2013年12月02日 17:51:04

虽然网上资源很多,但是还是很让人难受,尤其是新手。

找了好久,好多例程都看了,有的不能跳转,有的不能添加按钮,当然这是自己能力有限所致,看得越多,越糊涂了。

最终找到了比较合适的解决方案,记下也分享一下!

最终实现效果:

1、主界面

主界面

2、跳转后页面

跳转后界面

上代码:

1、代理实现部分,其他函数是系统默认的

#import "AppDelegate.h"

#import "IndexWin.h"

@implementation AppDelegate


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

{

    self.window = [[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]];

    // Override point for customization after application launch.

    

    //创建主窗口

   IndexWin *m_indexWin=[[IndexWinalloc]initWithNibName:@"IndexWin"bundle:nil];

    //依附于创建的主窗口创建导航栏控制器

    UINavigationController *um_indexWin=[[UINavigationControlleralloc]initWithRootViewController:m_indexWin];

    //设置导航栏渐变颜色

    [um_indexWin.navigationBarsetTintColor:[UIColorblackColor]];

    //隐藏导航栏,便于自定义导航栏

    um_indexWin.navigationBarHidden=YES;

    //设置窗口的根视图控制器

   self.window.rootViewController=um_indexWin;

    //设置窗口背景色

    self.window.backgroundColor = [UIColorwhiteColor];

    [self.windowmakeKeyAndVisible];

    return YES;

}

2、自定义的主窗口[IndexWin],其他函数是系统默认的

#import "IndexWin.h"


@interface IndexWin ()


@end

@implementation IndexWin


- (void)viewDidLoad

{

    [superviewDidLoad];

    // Do any additional setup after loading the view from its nib.

    

    //设置导航栏标题

    [selfsetTitle:@"Simple"];

    //自定义导航栏按钮

   UIButton *um_left=[[UIButtonalloc]initWithFrame:CGRectMake(20,8, 50, 30)];

    //为导航栏按钮添加事件

    [um_left addTarget:selfaction:@selector(af_go:)forControlEvents:UIControlEventTouchUpInside];

    //设置按钮标题

    [um_left setTitle:@"Go"forState:UIControlStateNormal];

    //设置按钮背景色

    [um_left setBackgroundColor:[UIColorgrayColor]];

    //自定义导航栏容器视图

   UIView *um_navBar=[[UIViewalloc]initWithFrame:CGRectMake(0,0, 320, 44)];

    //自定义导航栏添加按钮

    [um_navBaraddSubview:um_left];

    //自定义导航栏背景色

    [um_navBar setBackgroundColor:[UIColorgrayColor]];

    //自定义导航栏透明度

    [um_navBarsetAlpha:0.6];

    //添加自定义导航栏到当前窗口

    [self.viewaddSubview:um_navBar];

    

}

-(void)viewWillAppear:(BOOL)animated

{

    //在导航栏添加按钮,此时导航栏是系统默认的,貌似每次界面隐藏都需要重新添加[不确定]

//    UIBarButtonItem *m_rightBtn=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(af_go:)];

//    UIBarButtonItem *m_leftBtn=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(af_go:)];

//    [self.navigationItem setLeftBarButtonItem:m_leftBtn animated:YES];

//    [self.navigationItem setRightBarButtonItem:m_rightBtn animated:YES];

    //        self.navigationController.navigationBarHidden=YES;


}

-(IBAction)af_go:(id)sender

{

    //创建将要跳转到的视图

    LeftWin *m_leftwin=[[LeftWinalloc]initWithNibName:@"LeftWin"bundle:nil];

    //利用导航栏的push方法进行页面跳转

    [self.navigationControllerpushViewController:m_leftwin animated:YES];

}


3、自定义的跳转后的界面[LeftWin],其他函数是系统默认的

#import "LeftWin.h"


@interface LeftWin ()


@end


@implementation LeftWin


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

   self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];

   if (self) {

        // Custom initialization

    }

    return self;

}


- (void)viewDidLoad

{

    [superviewDidLoad];

    // Do any additional setup after loading the view from its nib.

    

   UIButton *um_left=[[UIButtonalloc]initWithFrame:CGRectMake(20,8, 50, 30)];

    [um_left addTarget:selfaction:@selector(Back:)forControlEvents:UIControlEventTouchUpInside];

    [um_left setTitle:@"Go"forState:UIControlStateNormal];

    [um_left setBackgroundColor:[UIColorgrayColor]];

    

   UIView *um_navBar=[[UIViewalloc]initWithFrame:CGRectMake(0,0, 320, 44)];

    [um_navBaraddSubview:um_left];

    [um_navBar setBackgroundColor:[UIColorgrayColor]];

    [um_navBarsetAlpha:0.6];

    

    [self.viewaddSubview:um_navBar];

}

-(IBAction)Back:(id)sender

{

    //跳转回上一级窗口

    [self.navigationControllerpopViewControllerAnimated:YES];

}



附:源码

http://download.csdn.net/detail/hg_lin/6644981
版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS 导航栏添加自定义的分段控件

NSArray * items = @[@"资料",@"动态"]; UISegmentedControl *segment = [[UISegmentedControl alloc ] in...
  • thanklife
  • thanklife
  • 2017年09月23日 10:56
  • 344

android底部导航栏+viewPager+自定义view的简单实现

底部导航栏
  • sinat_28676875
  • sinat_28676875
  • 2016年08月16日 20:02
  • 1298

iOS 自定义导航栏笔记

一、UINavigationBar的结构 导航栏几乎是每个页面都会碰到的问题,一般两种处理方式:1.隐藏掉不显示 2.自定义 1. 添加导航栏 TestViewController * main...
  • li_yangyang_li
  • li_yangyang_li
  • 2016年12月22日 11:38
  • 1094

自定义导航控制器的titleView实现多控制器的切换

在很多应用中都有通过自定义navigationItem的titleView,来实现多个控制器的切换管理.主要实现这个功能需要注意一下两个方面: 一,自定义titleView,里面包含两个按钮,监听点...
  • anywhereIOS
  • anywhereIOS
  • 2016年01月26日 17:59
  • 1374

iOS自定义导航栏-导航栏联动(一)

iOS导航栏联动效果- GKNavigationController
  • u010565269
  • u010565269
  • 2017年06月25日 11:27
  • 563

iOS系统导航栏的自定义化

本文仅提供大家参考与交流,可能会有一些错误,欢迎大家指正。Xcode版本6.3.2。 大部分APP都应用了导航控制器(UINavigationController)与标签控制器(UITabl...
  • tzdd_zyk
  • tzdd_zyk
  • 2015年06月20日 10:49
  • 1559

一个很简单的侧边栏导航实现

一个简单的sidebar的小例子。在实习的项目中,有一个重要的UI部分就是一个sidebar.之前一直很想自己能够重构这一部分,但是无论是参考项目代码还是到GitHub上的代码,我都感觉到很吃力。因为...
  • u011273849
  • u011273849
  • 2015年05月07日 15:16
  • 2888

iOS花式更改系统自带UINavigationBar导航栏样式,让你拥有更纯净,更强自定义的导航栏!!!It's amazing

在开发过程中,如果你用的是传统的样式顶部20px的statusbar加上下面44高度的navigationBar的话, 这样的产品经理真的是太好了,很简单,也很传统,但是现在越来越多的人自定义导航栏,...
  • Deft_MKJing
  • Deft_MKJing
  • 2016年07月31日 13:37
  • 5149

ios 自定义导航栏和分割线

自定义导航栏: // CustomNaviBarView.h #import @interface CustomNaviBarView : UIView { @private /** ...
  • qilixiang012
  • qilixiang012
  • 2014年11月20日 13:17
  • 2539

iOS用代码实现导航栏NavigationBar与跳转(Objective-C)

当我们在使用storyboard来进行界面设计的时候,如果想要设置导航栏或者标签页(TabBar)是非常方便的。但是可能由于特殊原因,我们需要通过代码来实现导航栏,并且在导航栏的基础上进行界面跳转,我...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2015年10月28日 22:13
  • 3854
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS导航栏的简单用法以及自定义实现例程
举报原因:
原因补充:

(最多只允许输入30个字)