• swift-delegate(代理)或者block传值


    1:delegate或者block传值

    import UIKit
    class ViewController: UIViewController,TestDelegatePassValueDelegate {
    
        @IBOutlet weak var TFContent: UITextField!
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        @IBAction func delegateOrBlockBtnClick(sender: AnyObject) {
            TFContent.text = ""
            let storyBoard = UIStoryboard(name: "Main", bundle: nil)
            let testVCtl = storyBoard.instantiateViewControllerWithIdentifier("TestDelegateOrBlockViewController") as!TestDelegateOrBlockViewController;
            /**设置代理*/
            testVCtl.delegate = self
            /**block回调传值*/
            testVCtl.passValueUseBlock { (valueString) -> Void in
                
                self.TFContent!.text = valueString  as String
                
            }
            self.navigationController!.pushViewController(testVCtl, animated: true);
            
            
        }
        /**代理函数*/
        func passValueUseDelegate(valueString: NSString)
        {
            self.TFContent!.text = valueString as String
        }
       
    }
    import UIKit
    import Foundation
    /**定义一个block*/
    typealias TestBlockCompleteHandler = (valueString: NSString)->Void
    /**声明定义协议*/
    protocol TestDelegatePassValueDelegate:NSObjectProtocol
    {
        func passValueUseDelegate(valueString: NSString)
    
    }
    
    class TestDelegateOrBlockViewController: UIViewController
    {
    
        @IBOutlet weak var TFContent: UITextField!
        var delegate:TestDelegatePassValueDelegate?
       
        var myBlockHandler:TestBlockCompleteHandler?
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // Do any additional setup after loading the view.
        }
    
        override func didReceiveMemoryWarning()
        {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
        
        
      //MARK: - 用代理来实现传值
        @IBAction func delegateBtnClick(sender: AnyObject)
        {
            
             TFContent.resignFirstResponder()
            if ((delegate != nil) && (delegate?.respondsToSelector("passValueUseDelegate:") != nil))
            {
              delegate?.passValueUseDelegate(TFContent.text!)
            
            }
            self.navigationController?.popViewControllerAnimated(true)
            
            
            
        }
        
        //MARK: - 用block来实现传值
        @IBAction func blockBtnClick(sender: AnyObject)
        {
            
            TFContent.resignFirstResponder()
            myBlockHandler?(valueString: self.TFContent.text!)
            self.navigationController?.popViewControllerAnimated(true)
        
        }
        
        func passValueUseBlock(blockHandler: TestBlockCompleteHandler)
        {
          myBlockHandler = blockHandler
        
        }

  • 相关阅读:
    win7服务器从本地粘贴的文件,粘贴卡死
    AOP面向切面编程
    静态代理和动态代理
    查询数据库中第n行数据
    记录我的成长
    路径总和,双重递归
    java Queue 常用方法(持续更新)
    对称二叉树
    Linux学习之五——Linux虚拟机文件系统
    Linux学习之四——命令运行机制及查看命令帮助
  • 原文地址:https://www.cnblogs.com/thbbsky/p/4889039.html
Copyright © 2020-2023  润新知