首頁  >  問答  >  主體

objective-c - 關於iOS的幾個傳值問題。

在學習iOS的過程中,困擾我的一個問題就是 控制器頁之間的傳值問題,例如順傳、逆傳。

傳值的方式有 代理傳值、block傳值、還有通知傳值,有哪位好心大神能給講一講。

怪我咯怪我咯2752 天前346

全部回覆(1)我來回復

  • PHP中文网

    PHP中文网2017-05-02 09:22:15

    順傳一般是直接傳值

    代理傳值

    A<B-Delegate>//A实现B协议
    
    B //声明协议和方法 声明代理属性
    Delegate->(methodFromB:(B)b value:(obj)obj)//B声明协议方法
    property-weak-deleagte
    
    //在A中
    B.delegate = A;
    
    //当B中发生传值时调用
    B
    [self.delegate methodFromB:self value:obj]
    
    //因为 self.delegate = A
    //A中执行定义的协议方法接收到值
    -methodFromB:(B)b value:(obj)obj   
    

    block傳值

    A
    //A中实现B的block的代码块
    B.block = ^(obj){
    
    };
    
    B//声明代码块
    typedef BBlock
    property-block
    
    //当B中调用
    self.block(obj);
    就会调用A中以实现的代码块实现传值
    

    通知傳值

    A中接收通知
    NotificationCenter.addobserve(A).name("NAME").selector(noti:)
    -noti:(noti)noti{
    noti.obj//接收到值
    }
    B中发送通知
    NotificationCenter.postName("NAME").obj(obj)
    

    單例傳值

    //用单例中的值更新A的值
    A.property = global.singleton.property;
    //B中值改变 把值赋给单例
    global.singleton.property = B.property;
    
    

    回覆
    0
  • 取消回覆