我想设置一个委托(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/