ios - 在 View Controller 和类之间进行委托(delegate)

标签 ios swift delegates

我想设置一个委托(delegate)来在 View Controller 和类之间进行通信。但是没有地方可以分配委托(delegate),因为没有 prepareForSegue 类型的连接。我应该把委托(delegate)放在哪里,我应该如何实现代码?

代码如下:

Swift 中的协议(protocol):

@objc public protocol translationMadeDelegate: class {
    func didGetTranslation(translation:CGPoint)
}

在 Swift 的 viewDidLoad 中委托(delegate)初始化:

var delegate:translationMadeDelegate?
let trans:CGPoint = CGPointMake(100, 100)
self.delegate!.didGetTranslation(trans)

Objective-C 类委托(delegate)调用

- (void)didGetTranslation:(CGPoint *)translation {
    NSLog(@"cgpointed");
}

最佳答案

看看这段代码,它展示了实现应该如何进行

//Class

protocol translationMadeDelegate: class {
     func didGetTranslation(translation : CGPoint)
}

class someClass {
    weak var delegate: childViewControllerDelegate?

    func someMethodThatCallsDelegate(){
        let point = CGPoint(x: 10, y: 20)
        self.delegate?.didGetTranslation(point);
    }
}


//ViewController

class parentViewController: UIViewController, translationMadeDelegate {
    var classObj : someClass!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.classObj = someClass()
        self.classObj.delegate = self
    }
    func didGetTranslation(translation : CGPoint){
        //do some stuff with translation
    }
}

关于ios - 在 View Controller 和类之间进行委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36548932/

相关文章:

ios - block 中嵌套 block 的弱引用和强引用

ios - objective-C iOS : Begin populating UITableView immediately from JSON Stream

Swift 泛型引用类型

iphone - 设置 UITextFieldDelegate 并在 UITextField dealloc 后释放,自包含

ios - 将结构数组保存到 userDefaults

ios - 应用被拒——如何证明没有使用私有(private)API

swift - 如何在 IF 条件下获取枚举的参数值?

xcode - 如何在 Swift Playground 中获取 Canvas

ios - 将委托(delegate)分配给类的实例

c# - 从非托管 C 库访问 C# 方法是否安全?