您的位置:首页 > 移动开发 > Swift

Swift基础(二十八)UIPickerView

2016-07-27 10:48 344 查看
class RootViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

    // 定义两个数组以便数据源使用,

    var authorsArray: [String]!

    var appsArray: [String]!

    

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view.

        self.view.backgroundColor = UIColor.whiteColor()

        

        // 创建选择控制器

        let pickerView: UIPickerView = UIPickerView(frame: CGRectMake(0, 200, 0, 0))

        // 添加到视图

        self.view.addSubview(pickerView)

        // 创建之后添加到视图时,因为没有实现数据源协议,所以没有数据。首先Controller类必须声明要实现UIPickerView的数据源协议代理

        // 指定数据源即协议的代理人

        pickerView.dataSource = self

        pickerView.delegate = self

        // 创建两个数组

        authorsArray = ["张小凡", "马化腾", "王健林"]

        appsArray = ["计算机", "懂技术", "老爹说", "接地网", "圣诞节"]

    }

    

    // 实现pickerView的数据源协议和代理,显示数据

    // 返回多少列

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {

        return 2

    }

    

    // 每一列返回多少行

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

        // 第一列返回authorsArray对应的值

        if component == 0 {

            return self.authorsArray.count

        } else if component == 1 {

            return self.appsArray.count

        }

        return 0

    }

    

    // 通过字符串来创建选择控制器

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

        // 第一列返回authorsArray对应的值

        if component == 0 {

            return authorsArray[row]

        } else if component == 1 {

            return appsArray[row]

        }

        return ""

    }

    

    // 选项改变后,触发代理事件

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        print("当前选择的是第\(component)列 第\(row)行")

    }

    

    // 通过View来创建带有图片的选择控制器

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

        let view: UIView = UIView(frame: CGRectMake(0, 0, 200,40))

        // 创建图像视图

        let imageView = UIImageView(frame: CGRectMake(0, 0, 40, 40))

        imageView.image = UIImage(named: "image.png")

        // 创建文本标签

        let label: UILabel = UILabel(frame: CGRectMake(40, 0, 160, 40))

        // 第一列返回authorsArray

        if component == 0 {

            label.text = authorsArray[row]

        } else if component == 1 {

            label.text = appsArray[row]

        }

        // 添加图像

        view.addSubview(imageView)

        // 添加文本标签

        view.addSubview(label)

        return view

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息