Swift中的UIPickerViewDelegate

Swift中的UIPickerViewDelegate,swift,function,methods,protocols,Swift,Function,Methods,Protocols,我正在学习关于lynda的Xcode基础Swift教程。现在我们有了一个代码,它使用Picker视图和自定义数据。这个想法很简单,向旋转的轮子添加数据,但是我很难读取这个协议中的方法。有一个-pickerView:titleForRow:forComponent: 我想知道它是如何得到行值的。用手指纺车还是??此方法的代码如下所示: func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent compo

我正在学习关于lynda的Xcode基础Swift教程。现在我们有了一个代码,它使用Picker视图和自定义数据。这个想法很简单,向旋转的轮子添加数据,但是我很难读取这个协议中的方法。有一个-pickerView:titleForRow:forComponent:

我想知道它是如何得到行值的。用手指纺车还是??此方法的代码如下所示:

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
        return moodArray[row]
    }

选择器视图正在向其代理询问一个问题。“对于索引x处的行和列(组件),我的标题应该是什么?请发送字符串让我知道”

由您决定是否从moods数组返回字符串。快乐,悲伤,好斗,困惑。这取决于你


委托方法的使用使得创建UI组件不需要对对象进行子类化。实际上,你把工作委托给外部承包商

我想我现在明白了。我还有一个小问题。在某个地方我看到了代理协议,在某个地方看到了协议。这些术语是一样的吗?还是有很大的差别?或多或少都是一样的。协议是一组方法,当对象采用协议时,应该实现这些方法。有时方法是可选的,有时不是。委托协议只是对协议存在原因的额外语义解释。谢谢。还有一个问题。我不熟悉这种语法:titleForRow row row row:Int,为什么键入前有两个名称?请检查Swift手册中的
函数参数名称(p274?)。第一个是外部名称,第二个是函数的内部名称。在这种情况下,它来自自动Obj-C转换。