UINavigationBar功能实现

转载 2015年07月09日 11:07:03

IOS5中:

-(void)setBackgroundImage:(UIImage)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics

IOS6中:

在上面的方法基础上,加上[UIApplication  shareApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;



基础控件UINavigationController中的传值,代理传值,正向传值,反向传值

#import <UIKit/UIKit.h>

//声明一个协议

@protocol SendValue<NSObject>

//定义一个方法

- (void)sendBtnTitle:(NSString *)title;

@end

@interface FirstViewController : UIViewController

// 定义代理

@property (nonatomic, assign) id <SendValue>delegate;

// 创建一个正向传值的属性

@property (nonatomic,copy) NSString *currentTitle;

@end
//正向传值利用的是属性传值

//反向传值利用代理传值

创建一个RootViewController类和FirstViewController

分别在AppDelegate.m中调用RootViewController.h   在RootViewController.m中调用 FirstViewController.h

在RootViewController.m

{

 self.view.backgroundColor = [UIColor redColor];

    self.navigationItem.title = @"Root";

    

    UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [btn setTitle:@"push to VC2" forState:UIControlStateNormal];

    [btn setFrame:CGRectMake(30, 100, 300, 50)];

    [btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:btn];

}


FirstViewController.h

//协议代理实现反向传值

//声明一个协议

@protocol SendValue <NSObject>

//定义一个方法

-(void)SendTitle:(NSString *)title;


@end


@interface 下面写上

//定义代理

@property (nonatomic,assign) id <SendValue> delegate;

//创建一个正向传值的属性

@property (nonatomic,copy) NSString *currentTitle;


FirstViewController.m中

@implementation 下面写上

@synthesize delegate = _delegate;

@synthesize currentTitle = _currentTitle;

- (void)viewDidLoad 

{

//UINavigationController中的反向传值问题

      

self.view.backgroundColor = [UIColor yellowColor];

//把标题放在一个数组中 利用for循环设置

    NSArray * btnTitles = [NSArray arrayWithObjects:@"标题1",@"标题2",@"标题3", nil];

    

    for (int i=0; i<[btnTitles count]; i++) {

        UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

        //如果按钮的标题和属性中的_currentTitle 相同,即和根页面中的导航条的title一样

        if ([_currentTitle isEqualToString:btn.currentTitle]) {

        //开启选中状态

            btn.selected = YES;

        }

        

        [btn setTitle:[btnTitles objectAtIndex:i] forState:UIControlStateNormal];

        [btn addTarget:self action:@selector(titleBtnClicked:) forControlEvents:UIControlEventTouchUpInside];

        [btn setFrame:CGRectMake(10, 80+i*40, 300, 30)];

        [self.view addSubview:btn];


}

//titleBtnClicked:设置

-(void)titleBtnClicked:(UIButton *)btn

{

    NSString * title = btn.currentTitle;


//判断代理中是否有SendTitle:这个函数

    if([_delegate respondsToSelector:@selector(SendTitle:)]){

//代理执行自己的SendTitle 函数,传参是title

        [_delegate SendTitle:title];

    

    }

    

    [self.navigationController popViewControllerAnimated:YES];

}


在RootViewController.h中

#import <UIKit/UIKit.h>

添加头文件  #import "FirstViewController.h"

//把协议挂过来

@interface RootViewController : UIViewController <SendValue>


@end


- (void)btnClicked:(UIButton *)btn

{

    FirstViewController * first = [[FirstViewController alloc] init];

//将当前页面的navigaItem.title传递过去

//正向传值

    first.currentTitle = self.navigationItem.title;

//将代理指定为当前rootViewController类的指针

    first.delegate = self;

    [self.navigationController pushViewController:first animated:YES];

}

//实现协议定义的方法

-(void)SendTitle:(NSString *)title

{

    self.navigationItem.title = title;

}




相关文章推荐

UINavigationBar Category

导航条的使用 UINavigationBar

导航条继承与UIView,且通常只是作为多个UINavigationItem的容器,而且他以Stack的形式来管理多个UINavigationItem的控件,这意味着导航条上每次只能看到一个UINav...

IOS_UI_UINavigationBar详解

  • 2015-05-24 15:00
  • 424B
  • 下载

UINavigationbar的背景修改方法集合

UINavigationbar背景修改的方法代码如下: 1 2 3 4 5 6 7 8 9 @implementationUINavigat...

iOS开发之UINavigationBar主题设置

本文主要介绍如何设置整个项目中的导航栏主题。

[ios开发技巧之]UINavigationbar的背景修改方法集合

最近我突然发现UINavigationbar背景修改的方法不起作用了,代码如下: 1 2 3 4 5 6 7 8 9 @implementati...

修改UINavigationbar背景

IOS5下在ViewDidLoad中添加代码 if ([self.navigationController.navigationBar respondsToSelector:@selector...

UINavigationItem UINavigationBar 关系分析

1.关系分析 UIBarItem-> UIBarButtonItem -> UINavigationItem 1.1 UIBarItem: UIBarItem类是一个可以放置在Bar...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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