1. 程式人生 > >iOS利用Block傳值

iOS利用Block傳值

ViewController.h 需要實現

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

- (void)sendMessage:(void(^)(NSString *))blc;

@end

ViewController.m裡面需要實現

#import "ViewController.h"

#import "secondeViewController.h"

@interface ViewController ()

{

void (^tempBloc)(NSString

*);

UITextField *textField;

}

@end

@implementation ViewController

- (void)viewDidLoad {

    [superviewDidLoad];

UIButton *button = [UIButtonnew];

    button.backgroundColor = [UIColorredColor];

    button.frame = CGRectMake(100, 100, 50, 50);

    [button addTarget:selfaction:@selector(gotoSecondeViewController)

forControlEvents:UIControlEventTouchUpInside];

    [self.viewaddSubview:button];

textField = [UITextFieldnew];

textField.frame = CGRectMake(100, 300, 200, 50);

    [self.viewaddSubview:textField];

}

- (void)gotoSecondeViewController{

    secondeViewController *KsecondeViewController = [secondeViewController

new];

    KsecondeViewController.VC = self;

    [selfpresentViewController:KsecondeViewController animated:YEScompletion:^{

    }];

if (tempBloc) {

tempBloc(textField.text);

    }

}

- (void)sendMessage:(void (^)(NSString *))blc{

tempBloc = ^(NSString *str){

        blc(str);

    };

}

secondeViewController.h裡面需要實現

#import <UIKit/UIKit.h>

#import "ViewController.h"

@interface secondeViewController : UIViewController

@property (nonatomic,strong)ViewController *VC;

@end


secondeViewController.m裡面需要實現

#import "secondeViewController.h"

#import "ViewController.h"

@interface secondeViewController ()

@end

@implementation secondeViewController

- (void)viewDidLoad {

    [superviewDidLoad];

self.view.backgroundColor = [UIColorwhiteColor];

UILabel *lable = [UILabelnew];

    lable.backgroundColor = [UIColorgreenColor];

    lable.frame = CGRectMake(100, 100, 200, 50);

    [self.viewaddSubview:lable];

    [_VC sendMessage:^(NSString *str) {

        lable.text = str;

    }];    

}




相關推薦

iOS利用Block

ViewController.h 需要實現 #import <UIKit/UIKit.h> @interface ViewController : UIViewController - (void)sendMessage:(void(^)(NSSt

iOS Block、代理、通知中心

  Joker_King  關注 2016.04.18 22:17*  字數 802  閱讀 1792 評論 7 喜歡 12 在我們需

ios block 最簡單的方法

1、在您需要傳值出去的控制器標頭檔案裡宣告: @property (nonatomic,copy) void(^stringblockr)(int age); 2、然後在你pop或者push到被傳值的頁面的方法裡,呼叫該方法: self.stringblockr(

iOS block(逆

block是個好東西,是蘋果官方推薦的一種方法,效率高,程式碼簡單,今天用block主要是做一個簡單傳,暫時不對block詳細介紹,關於__block的用法,後期會一一介紹; 接下來,通過一個block,將 SecondViewController 的數值傳給  First

IOS Block

1.使用協議在下級像上級傳遞值得時候比較繁瑣,需要定義協議方法,定義屬性,呼叫,在上級裡設定代理實現代理方法。 2.使用block 在類前定義需要使用到的block, #import <UIKit/UIKit.h> /**  * 定義一個block 

iOS-OC-iOS大全(代理,block ,單例,通知,屬性)

1、代理傳值 有A \B 兩個頁面需要將B頁面的值傳個A 總結: 1.首先應該在b頁面寫一個協議,協議裡有帶引數的方法,並建立實現該協議的屬性delegate,然後判斷該delegate_ 是否實現了協議的方法,實現該協議方法,並傳入值。 2.在A.h

iOS Block的基本使用以及Block

block為我們提供了一個非常便捷的方法去實現各種傳值以及回撥 合理的使用block可以減少程式碼量以及更加優雅的實現功能 現做個小整理如下: #pragma mark About Block //block的原型: NSString *(^myB

iOS】代理與塊代碼

ring 方法 nslog 設置代理 轉載 adf delegate alloc 代理傳值 主線程與子線程常常須要進行數據的傳遞。不同的類之間,不同的控制器之間都須要。 並且常常須要監聽一個動作的完畢。而後才去做對應事件。(代理是一對一的關系)。 一、代理傳值 代理

iOS 代理反向

obj receive leg 輸出 1.4 方法 bsp control 需求 在上篇博客 iOS代理協議 中,側重解析了委托代理協議的概念等,本文將側重於它們在開發中的應用。 假如我們有一個需求如下:界面A上面有一個button、一個label。從界面A跳轉到界面B

IOS 代理協議

oid nds tag 代理方法 round 循環 prot copy 黃色 順傳 假設A為第一個視圖控制器,B為第二個視圖控制器 在A中導入B的.h文件 場景:A向B傳值 第一步:在B的.h中定義一個content屬性 @interfaceSecondViewContr

block

//主頁面 import UIKit class TableVC: UITableViewController { var sectionName:[String] = [] var rowName1:[String] = [] var rowName

ios模型拷貝/

場景:兩個介面A,B(Apush到B介面)同時需要引用同一個model,並修改. 問題是:在B中如果直接用一個同類型model的屬性來接受A介面傳過來的Model時,在B介面修改model後,A介面對應的model也會發生變化. 希望達到的目的:A,

block的高階用法(一) -- block

我們先從簡單的入手,先講下block的傳值,後面會有更精彩的。 在講傳值之前我們先複習下block的基礎知識: - (void)viewDidLoad { [super viewDidLoa

控制器之間的資料傳遞——Block

Block傳值 我們先在這裡約定:介面1傳值到介面2為順傳,介面2傳值到介面1為逆傳 一般用Block傳值是為了降低檢視控制器之間的耦合度,和代理傳值類似主要用於逆序傳值。 一. 實現步驟

block 遇到的出錯點:Thread 1:EXC_BAD_ACCESS(code=1,address=0x10)

Home介面也就是需要接收值的介面。 #pragma mark 推出登入介面 -(void)loginAction:(id)sender { LoginViewController *loginVC = [[LoginViewControlleralloc]ini

Swift如何實現代理,block

要實現代理傳值,我們先來看一下需求 通過點選提交進入第二個頁面,點選返回pop到第一個頁面,並且用代理和block 傳回一個值. 我們先來看第二個頁面的程式碼: import UIKit //定義協議 protocol loginDelegate{

iOS NSNotification(通知)~demo

//聯絡人:石虎  QQ: 1224614774暱稱:嗡嘛呢叭咪哄 /** 注意點: 1.看 GIF 效果圖.        2.看連線檢視的效果圖.        3.看實現程式碼(直接複製實現效

iOS 五種方式

iOS 有五種傳值方式 一.屬性傳值 屬性傳值最為簡單,但是比較單一,只能從一個檢視傳至另一個檢視, 屬性傳值第一步需要用到什麼型別就定義什麼樣的屬性 新建兩個檢視控制器RootViewController和SecondViewController,從一個頁面傳至第二個頁面

C# Winform利用POST方式模擬表單提交資料(Winform與網頁互動)

其原理是,利用winfrom模擬表單提交資料,將要提交的引數提交給網頁,網頁執行程式碼,得到資料,然後Winform程式將網頁的所有原始碼讀取下來,這樣就達到windows應用程式和web應用程式之間傳參和現實資料的效果了。 ­     首先建立一個windows應用程

iOS Block界面反向小demo

一個 push action put btn inter text nac mic 1、在第二個視圖控制器的.h文件中定義聲明Block屬性: // 定義block @property (nonatomic, copy) void (^NextViewControlle