zoukankan      html  css  js  c++  java
  • 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传值

  • 相关阅读:
    Linux网络编程必看书籍推荐
    SpringMVC DispatcherServlet初始化过程
    freemarker写select组件(五)
    hdu 1009 FatMouse&#39; Trade
    新IOS编程语言 Swift 新编译器Xcode6
    NoSQL数据库:数据的一致性
    POJ 3041 Asteroids
    POJ 3342 Party at Hali-Bula (树形dp 树的最大独立集 判多解 好题)
    __repr__与__str__
    HDU 4950 Monster(公式)
  • 原文地址:https://www.cnblogs.com/wangpei/p/3719284.html
Copyright © 2011-2022 走看看