如何在Swift中从头开始创建委托?作为一个例子,让我们说每次打开键盘时我想滚动到tableView的底部(UITextFieldDelegate)。我从哪里开始实现这个?挑战是在另一个类(在这种情况下,视图控制器)中执行方法。 注意:我四处搜索,没有找到Swift语言的重复问题。
答案 0 :(得分:3)
你的问题有点模糊,但我认为你要找的是" protocol",在Apple的docs:
中详尽解释以下示例使用单个实例定义协议 方法要求:
protocol RandomNumberGenerator {
func random() -> Double
}
在其他地方,您可以创建一个实现所需方法的类:
class LinearCongruentialGenerator: RandomNumberGenerator {
var lastRandom = 42.0
let m = 139968.0
let a = 3877.0
let c = 29573.0
func random() -> Double {
lastRandom = ((lastRandom * a + c) % m)
return lastRandom / m
}
}
在其他地方存储/使用协议,调用委托上定义的方法(实现协议)。
class Dice {
let sides: Int
let generator: RandomNumberGenerator // delegate object that implements the protocol
init(sides: Int, generator: RandomNumberGenerator) {
self.sides = sides
self.generator = generator
}
func roll() -> Int {
return Int(generator.random() * Double(sides)) + 1
}
}
至于你在哪里这样做,它和Obj-c一样。 Swift使它变得更容易,因为它不需要您导入头文件,因此您可以将它放在客户端的文件(使用它的类)中,或者放在它自己的文件中。如上所述,您将声明并实现将成为委托实例的类中的协议方法。