设为首页 加入收藏

TOP

iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包(二)
2019-08-31 00:22:13 】 浏览:146
Tags:iOS 开发 swift 教程 代理 相互 调用 block 实现 Swift Block 闭包
ain  copy
 
  1. typedef void(^RefreshHintLabelBlock)(NSString *hintString);  
  2.   
  3. @interface SecondViewController : UIViewController  
  4. @property (nonatomic, copy) RefreshHintLabelBlock hintBlock;  
  5. @end  

 

 

        1.3.3 block的回调。 SecondViewController.m中

 

[objc]  view plain  copy
 
  1. #pragma mark 返回上一页回调 ,将用户输入的用户名传回给 ViewController.swift  
  2. -(BOOL)navigationShouldPopOnBackButton{      
  3.     if (_hintBlock) {  
  4.         _hintBlock(textField.text);  
  5.     }  
  6.     return YES;  
  7. }  

 

 

        1.3.4 在swift类中调用 oc的block.

 

[objc]  view plain  copy
 
  1. // push 到 oc controller  
  2. @IBAction func pushAction(_ sender: AnyObject) {  
  3.     let secondVC = SecondViewController.init()  
  4.       secondVC.secondDelegate = self;  
  5.     secondVC.hintBlock = {(t:String?)in  
  6.         self.hintLabel.text = "secondView textView.text = " + t!  
  7.     }  
  8.     self.navigationController?.pushViewController(secondVC, animated: true)  
  9. }  



 

   工程已上传到git上,git地址: https://github.com/zhonggaorong/SwiftOrOc/tree/master

2.  OC工程中引入swift类。 具体实现过程。

    耽误了不少时间, 今天才开始写oc工程中引入swift类。

    demo地址: 

   https://github.com/jukai9316/OCtoSwift  

 

     2.1  如何在OC类中使用swift类

 
       2.1.1   新建一个基于OC语言的工程 ,取名 OcOrSwiftTwo
       2.1. 2  实现的功能为 : 从oc类 viewcontroller中, push 至 swift语言 SecondViewController  ,然后SecondViewController可以通过代理或者swift闭包把值传回viewcontroller. 
       2.1.3   当前文件目录看下图:  (第四个箭头: 桥接文件)
        

  
    2.2   如何在OC中实现swift的代理与闭包Block方法
            
    2.2.1 如何在oc中引入swift类。#import "工程名-swift.h"
[objc]  view plain  copy
 
  1. #import "OcOrSwiftTwo-swift.h"  
   2.2.2 在secondViewController.swift 中实现代理与闭包,代码如下:
    注意: @objc(代理名)  才能在外部可见这个代理
 
[objc]  view plain  copy
 
  1. import UIKit  
  2. import Foundation  
  3.   
  4. // 必须加上@objc 代理才能在oc类中可见。  
  5. @objc(EditTextFieldDelegate)  
  6. protocol Edi
首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇完整代理的简单实现 下一篇【OC底层】KVO原理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目