繁体   English   中英

在Swift中为UIPickerView委派方法

[英]Delegate Methods in Swift for UIPickerView

刚开始使用Swift并且无法调用UIPickerView的委托方法

到目前为止,我已经将UIPickerViewDelegate添加到我的类中,如下所示:

class ExampleClass: UIViewController, UIPickerViewDelegate

我还创建了我的UIPickerView并为其设置了委托:

@IBOutlet var year: UIPickerView
year.delegate = self

现在我无法将以下内容转换为Swift代码:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

任何帮助,将不胜感激

这实际上是UIPickerViewDataSource协议中的一个方法,因此您需要确保设置选择器视图的dataSource属性: year.dataSource = self Swift本地方式似乎是在类扩展中实现协议,如下所示:

class ExampleClass: UIViewController {
    // properties and methods, etc.
}

extension ExampleClass: UIPickerViewDataSource {
    // two required methods

    func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int {
        return 1
    }

    func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int {
        return 5
    }
}

extension ExampleClass: UIPickerViewDelegate {
    // several optional methods:

    // func pickerView(pickerView: UIPickerView!, widthForComponent component: Int) -> CGFloat

    // func pickerView(pickerView: UIPickerView!, rowHeightForComponent component: Int) -> CGFloat

    // func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String!

    // func pickerView(pickerView: UIPickerView!, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString!

    // func pickerView(pickerView: UIPickerView!, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView!

    // func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int)
}

委托人不负责调用该方法。 相反,它由UIPickerView的数据源调用。 这些是您需要实现的UIPickerView数据源调用的两个函数:

// returns the number of 'columns' to display.
func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int

// returns the # of rows in each component..
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int

为确保调用这些函数,您的类还应实现数据源协议:

class ExampleClass: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource

并且应该设置您的选择器的数据源:

year.dataSource = self

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM