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
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Android自定义组合控件---简单导航栏

最近在做项目的过程中,发现项目中好多界面的导航栏都很类似或者一样,但是每次都要重复写同样的代码,觉得很不爽,所以就简单地自定义了一下导航栏控件. 先上图: 导航栏包括: * 返回按钮 * 标题...

IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)

为尊重文章原作者,转载务必注明原文地址:http://www.cnblogs.com/wt616/p/3784717.html 先看效果图:   在自定义导航栏背景时,可能会...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

自定义iOS7导航栏背景,标题和返回按钮文字颜色

在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文...

iOS 7, 导航栏和状态栏自定义

本文转自:http://beyondvincent.com/blog/2013/11/03/120-customize-navigation-status-bar-ios-7/#6  注:...

定制iOS 7中的导航栏和状态栏(主要是自定义的返回按钮)

转自:http://blog.csdn.net/ralbatr/article/details/22416201 注:本文译自Customizing Navigation B...

iOS 模态视图和导航栏自定义切换动画与交互动画

在iOS7之前,开发者为了寻求自定义Navigation Controller的Push/Pop动画,只能受限于子类化一个UINavigationController,或是用自定义的动画去覆盖它。但是...
  • chmhb
  • chmhb
  • 2014-08-12 16:07
  • 2062

IOS开发中如何自定义导航栏的按钮,文字和背景图片

在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字...

自定义iOS7导航栏背景,标题和返回按钮文字颜色

在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏...

IOS 开发笔记——自定义导航栏返回键后如何恢复系统默认返回手势

在开发当中,我们不得不要将导航栏的左边返回按钮自定义成不同的样式,但是一当我们自定义样式后,系统默认的 pop 手势就失效了,那么我们该如何做呢?其实这个问题网上也有很多答案,但是每一个答案都非常坑,...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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