我阅读了很多有关代表的信息,但实际上我无法正确使用它。
说明:我有A: UIViewController
,B: UIView
,C: UIViewController
。我想从运行SEGUEA: UIViewController
到C: UIViewController
来自内部B: UIView
。
我试过了:
protocol SegueDelegate {
func runSegue(identifier: String)
}
class B: UIView { ... }
凡在我A: UIViewController
:
override func viewDidLoad() {
B().delegate = self
}
func runSegue(identifier: String) {
self.performSegueWithIdentifier(identifier, sender: self)
}
并尝试通过以下方式调用它:
@IBAction func send(sender: AnyObject) {
let a: SegueDelegate? = nil
a!.runSegue("goToMainPage")
}
但我确定我没有正确使用它。有人可以帮我吗?我不想只是一个答案。请尽快描述一下它的概念
代表只是您可以以多种方式使用的设计模式。您可以查看Apple框架,以了解如何以及在何处使用委托作为示例。表视图委托可能是UIKit中最著名的委托。
委托充当代码与未知类的实例进行通信的回调机制,而又不知道该实例将对委托协议的方法做出响应。
委托的替代方法是使用闭包(在Objective-C中,我们曾使用过闭包)。何时使用一个vs.另一个是一个品味的问题。有一些经验法则,例如这里概述的。
IMO,您正在做的是使用委托的正确方法。您可以通过委托将视图功能与View Controller的功能分开,因此视图的约定很明确:用户需要响应委托方法。
您的代码有效并且正确。我在这里做了一个快速的实现:https : //github.com/kristofvanlandschoot/DelegateUsage/tree/master
与示例的主要区别在于,可能是您犯了一个错误的地方是代码的第三部分,您应该编写类似以下内容的代码:
@IBAction func send(sender: AnyObject) {
delegate?.runSegue("segueAB")
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句