【从零开始的Swift开发心路历程-Day24】天气预报App实作Part3

昨天我们已经能把单一地点的天气资讯显示到手机App上面了,接着我们会利用UIButton让我们可以选择想要的地点及时段!
首先,我们先拉一个UIButton进storyboard里并拉好@IBOutlet

接着我们要写按下Button後的@IBAction,我们会利用UIPickerView来完成选择地点和时间的功能!

我们先宣告常数及变数

并在ViewDidLoad里设定UIPickerView的DataSource和Delegate

接着来写选取地点时间UIPickerView的function

func locationView() {
        let alertView = UIAlertController(
            title: "选择地点",
            message: "\n\n\n\n\n\n\n\n\n",
            preferredStyle: .alert
        )
        let cancelAction = UIAlertAction(
            title: "取消",
            style: .cancel,
            handler: nil
        )
        let okAction = UIAlertAction(
            title: "确认",
            style: .default,
            handler: {_ in
                self.loadAPI(locationName: self.selectLocation, time: self.selectTime)
                self.timeView()
            }
        )
        alertView.view.addSubview(locationPickerView)
        alertView.addAction(cancelAction)
        alertView.addAction(okAction)
        present(alertView, animated: true, completion: nil)
    }
    func timeView() {
        let alertView = UIAlertController(
            title: "选择时间",
            message: "\n\n\n\n\n\n\n\n\n",
            preferredStyle: .alert
        )
        let cancelAction = UIAlertAction(
            title: "取消",
            style: .cancel,
            handler: nil
        )
        let okAction = UIAlertAction(
            title: "确认",
            style: .default,
            handler: {_ in self.loadAPI(locationName: self.selectLocation, time: self.selectTime)}
        )
        alertView.view.addSubview(timePickerView)
        alertView.addAction(cancelAction)
        alertView.addAction(okAction)
        present(alertView, animated: true, completion: nil)
    }

最後写一个extension

extension ViewController: UIPickerViewDataSource, UIPickerViewDelegate {
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if pickerView == locationPickerView {
            return location.count
        }
        if pickerView == timePickerView {
            return timeData.count
        }
        return 0
    }
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if pickerView == locationPickerView {
            return location[row]
        }
        if pickerView == timePickerView {
            return timeData[row]
        }
        return nil
    }
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if pickerView == locationPickerView {
            selectLocation = location[row]
        }
        if pickerView == timePickerView {
            selectTime = row
        }
    }
}

我们就能成功选择地点和时间啦!


<<:  [Android Studio 30天自我挑战] ListView 元件介绍

>>:  【没钱买ps,PyQt自己写】Day 21 - 透过 PyQt 实现滑鼠监听总整理,完全掌握滑鼠控制 (listen mouse)

Day29. Rails MVC 的 Model - 与资料库联络的桥梁

碍於篇幅的关系,来不及介绍关於Rails MVC的所有全貌。在Day23介绍了基本的MVC操作,今天...

[DAY12] 在 Azure Machine Learning 里 Label data(上)

DAY12 在 Azure Machine Learning 里 Label data(上) Azu...

大共享时代系列_008_共享居家照护

照顾...是谁的工作? 当我病痛衰弱时,谁可以照顾我? 家人?朋友?爱人? 但照顾者不需要休息跟喘息...

Equal Sides Of An Array

今日kata 原始题目如下:(6kyu) You are going to be given an ...

[DAY 15] 三人行石头火锅

三人行石头火锅 地点:台南市新营区民治路111号 时间:17:00~23:00 居然撑15天了~XD...