IOS 代码块传值

#import <UIKit/UIKit.h>
typedef void (^MyBlock)(NSString*);
@interface SecondViewController : UIViewController

@property (retain,nonatomic)UITextField* myTextField;
@property(copy,nonatomic)MyBlock block;
-(SecondViewController*)initWithBlock:(MyBlock)block;

@end

#import "SecondViewController.h"

@interface SecondViewController ()

@end

@implementation SecondViewController
-(SecondViewController *)initWithBlock:(MyBlock)block
{
    if (self=[super init]) {
        self.block=block;
    }
    return self;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    UIButton* btnTest=[UIButton buttonWithType:UIButtonTypeRoundedRect];

    btnTest.frame=CGRectMake(120, 130, 80, 30) ;
    [btnTest setTitle:@"Test" forState:UIControlStateNormal];

    [btnTest addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btnTest];

    UITextField* textField=[[UITextField alloc]initWithFrame:CGRectMake(120, 80, 80, 30)];
    textField.borderStyle=UITextBorderStyleRoundedRect;
    [self.view addSubview:textField];
    self.myTextField=textField;
}
-(void)back{
    if (self.block) {
        self.block(self.myTextField.text);
    }
    [self.navigationController popToRootViewControllerAnimated:YES];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

#import "ViewController.h"
#import "SecondViewController.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UIBarButtonItem* btnName=[[UIBarButtonItem alloc]initWithTitle:@"Next" style:UIBarButtonItemStyleDone target:self action:@selector(next)];
    self.navigationItem.rightBarButtonItem=btnName;
    // Do any additional setup after loading the view, typically from a nib.
}
-(void)next{
    SecondViewController* secondVC=[[SecondViewController alloc]initWithBlock:^(NSString* str){
        NSLog(@"%@",str);
        self.title=str;
    }];
    [self.navigationController pushViewController:secondVC animated:YES];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
时间: 2024-10-13 21:24:48

IOS 代码块传值的相关文章

iOS 页面与页面之间传参数的方法 代码块传值

代码块传值 是从后往前传值 1.声明代码块 (SecondXXX.h) 2.声明一个代码块类型的属性(SecondXXX.h) 3.调用代码块(SecondXXX.m) 4.实现代码块(SecondXXX.m) #import <UIKit/UIKit.h> #import "FirstViewController.h" @interface AppDelegate : UIResponder <UIApplicationDelegate> @property

iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值

有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳转传值 1.属性传值(正向传值) 属性传值是正向传值,只可以从前面一个页面传递到第二个页面,不可以从第二个页面传递到第一个页面 2.代理传值(逆向传值) 代理传值是逆向传值 代理传值步骤 代理传值 适用于 反向传值 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewControll

一篇文章看懂iOS代码块Block

iOS代码块Block 概述 代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量.作为参数.作为返回值,特殊地,Block还可以保存一段代码,在需要的时候调用,目前Block已经广泛应用于iOS开发中,常用于GCD.动画.排序及各类回调 注: Block的声明与赋值只是保存了一段代码段,必须调用才能执行内部代码 Block变量的声明.赋值与调用 Block变量的声明 Block变量的声明格式为: 返回值类型(^Bl

[转]iOS代码块Block

代码块Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,Block是一种特殊的数据类型,其可以正常定义变量.作为参数.作为返回值,特殊地,Block还可以保存一段代码,在需要的时候调用,目前Block已经广泛应用于iOS开发中,常用于GCD.动画.排序及各类回调 注: Block的声明与赋值只是保存了一段代码段,必须调用才能执行内部代码 Block变量的声明.赋值与调用 Block变量的声明 Block变量的声明格式为: 返回值类型(^Block名字)(参数列表); /

IOS 代码块

1.关系式表示 <returnType>(^BlockName)(list of arguments)=^(arguments){body;};

iOS 多视图—视图切换之代码块传参切换

在iOS设计中 ,视图在切换的时候同时能传参数到下一个视图页面的方法特别多,这里就以代码块实现传参的方法 FirstViewController.h #import <UIKit/UIKit.h> //声明代码块 typedef void (^PostValueBlock) (NSString *Info); @interface FirstViewController : UIViewController<UITextFieldDelegate> @property(strong

iOS之页面传值

页面之间的传值方式 设有firstView和secondView两个视图 属性传值(适用于页面之间的正向传值) 1.在要显示信息的页面,创建属性 2.在要传值的页面,设置属性值 3.在显示信息的页面的ViewdidLoad方法中,接收属性值 代理传值(适用于页面之间的反向传值) 1.创建协议及协议方法,在反向传值的页面(secondVC)中 2.创建协议类型的属性,   在secondVC中创建属性 3.调用属性  即delegate,在secondVC页面中的对象传值的方法中调用[self.d

iOS 五种传值方式

1.属性传值和代理传值 #import <UIKit/UIKit.h> #import "SecondViewController.h" @interface ViewController : UIViewController<UITextFieldDelegate,postValuedelegate> @property (nonatomic ,strong) UITextField *textfld; @property (nonatomic ,strong

ios网络学习------8 xml格式数据的请求处理 用代码块封装

#pragma mark 加载xml - (void)loadXML { //获取网络数据. NSLog(@"load xml"); //从web服务器加载数据 NSString *str = @"http://www.baidu.com?format=xml"; //这里是乱写的 //1简历NSURL NSURL *url = [NSURL URLWithString:str]; //2建立NSURLRequest NSURLRequest *request =