如何在Swift中创建委托?

时间:2014-07-24 04:03:48

标签: ios swift

如何在Swift中从头开始创建委托?作为一个例子,让我们说每次打开键盘时我想滚动到tableView的底部(UITextFieldDelegate)。我从哪里开始实现这个?挑战是在另一个类(在这种情况下,视图控制器)中执行方法。 注意:我四处搜索,没有找到Swift语言的重复问题。

1 个答案:

答案 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使它变得更容易,因为它不需要您导入头文件,因此您可以将它放在客户端的文件(使用它的类)中,或者放在它自己的文件中。如上所述,您将声明并实现将成为委托实例的类中的协议方法。