• iOS中使用block传值


    转自:http://blog.sina.com.cn/s/blog_60b45f230100yiaf.html

    用此方法传值可以替代委托了。具体例子:

    MainView.h
    #import <UIKit/UIKit.h>
    
    @interface MainView : UIViewController
    {
        IBOutlet UIButton* btn;
        IBOutlet UILabel* labShow;
    }
    -(IBAction)push:(id)sender;
    @end

    MainView.m

    #import "MainView.h"
    #import "SecondView.h"
    
    @implementation MainView
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
        }
        return self;
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
    }
    
    #pragma mark - View lifecycle
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    }
    -(IBAction)push:(id)sender
    {
        SecondView *s = [[SecondView alloc] initwithBlock:^(NSString *str){
            NSLog(@"%@",str);
            labShow.text = str;
        }];
        [self.navigationController pushViewController:s  animated:YES];
        [s release];
    }
    - (void)viewDidUnload
    {
        [super viewDidUnload];
    }
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
    
    @end
    SecondView.h
    #import <UIKit/UIKit.h>
    typedef void (^MyBlock)(NSString *);
    
    @interface SecondView : UIViewController
    {
        IBOutlet UITextField* txtView;
        MyBlock my;
    }
    -(IBAction)back:(id)sender;
    -(id)initwithBlock:(MyBlock)str;
    @end
    SecondView.m
    #import "SecondView.h"
    
    @implementation SecondView
    
    -(id)initwithBlock:(MyBlock)str
    {
        self = [super init];
        if(self)
        {   
            my = str;
        }
        return self;
    }
    -(IBAction)back:(id)sender
    {
        NSString* s = txtView.text;
        if(my)
        {
            my(s);
        }
        [self.navigationController popViewControllerAnimated:YES];
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
    }
    -(void)dealloc{
        Block_release(my);
        [super dealloc];
        
    }
    #pragma mark - View lifecycle
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    }
    
    - (void)viewDidUnload
    {
        [super viewDidUnload];
    }
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
    
    @end

    界面:
    iOS中使用block传值

    iOS中使用block传值

    iOS中使用block传值

  • 相关阅读:
    Window 7 + Ubuntu 双系统安装
    Android Proguard
    windows管理方式
    开启Telnet服务
    java中的Date类
    java中String字符串
    java自定义异常和throw、throws的使用
    java异常的嵌套和级联
    java中各种常见的异常
    java异常的基本概念和处理流程
  • 原文地址:https://www.cnblogs.com/wangpei/p/3719284.html
Copyright © 2020-2023  润新知