swift control实现原理

参考文献:

以下是具体代码:


import Foundation

/*!
swift控件实现原理
*/
protocol TargetAction{
    func performAction()
}

struct TargetActionWrapper<T:AnyObject>:TargetAction {

    weak var target : T?

    var action:(T)->()->()

    func performAction() {

        if let t  = target{
            action(t)() // real return a function ()->()
        }
    }
}


enum ControlsEvents{
    case TouchUpInside
    case ValueChanged
    case TouchDownOutside
}


class TKControl {

    var actions = [ControlsEvents:TargetAction]()

    //settargetaction Target/Action/ControlStatus
    func setTarget<T : AnyObject>(target:T,action:(T)->()->(),controlEvent:ControlsEvents)
    {
        let item = TargetActionWrapper(target: target, action: action)
        actions[controlEvent] = item
    }

    //add events
    func performActionForControlEvent(controlEvent: ControlsEvents) {
        actions[controlEvent]?.performAction()
    }

    //remove events
    func removeTargetForControlEvent(controlEvent: ControlsEvents) {
        actions[controlEvent] = nil
    }

    func log()
    {
       // println("some body jiekuan summary")
    }
}

results matching ""

    No results matching ""