iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
Mobile Development

我將點燃Swiftの大海系列 第 28

Day28. Swift一定要會の天氣API實作篇 (2)

  • 分享至 

  • xImage
  •  

MainView

今天稍微帶大家看一下 MainView 的版面設計,大部分都是前面幾天我們練習很多次的
就不特別介紹那些部分了

IBOutlet

    @IBOutlet weak var btnConfirm: UIButton!
    @IBOutlet weak var AreaPickerView: UIPickerView!

變數

我們依照選擇的資料為全台縣市設計一個列表儲存

    let Area: [String] = [
        "臺北市", "新北市", "基隆市", "桃園市", "新竹市", "新竹縣", "苗栗縣", "臺中市", "彰化縣",
        "南投縣", "雲林縣", "嘉義市", "嘉義縣", "臺南市", "高雄市", "屏東縣", "宜蘭縣", "花蓮縣", "臺東縣", "澎湖縣", "連江縣", "金門縣"
    ]  // 可選擇的縣市列表
    
    var selectedArea: String?  // 目前選擇的縣市

LifeCycle

一樣包進去 ViewDidLoad 中

        AreaPickerView.delegate = self
        AreaPickerView.dataSource = self
        // 預設選擇第一個城市
        selectedArea = Area[0]
        setUi()

extension

PickerView 的 extension 設計大部分也跟之前設定 tableView 相似

extension MainViewController: UIPickerViewDelegate, UIPickerViewDataSource {
    // 設定PickerView有1個轉輪
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
    // 設定轉輪有幾個選項
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return Area.count
    }
    
    // 設定每個選項的標題
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return Area[row]
    }
    
    // 當選項改變時設定選中的城市
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        self.selectedArea = Area[row]
    }
    
    // 確認按鈕點擊事件
    @IBAction func Confirm(_ sender: Any) {
        if let selectedArea = selectedArea {
            print("這是所選擇的地區 \(selectedArea)")
            let areaVC = AreaViewController(nibName: "AreaViewController", bundle: nil)
            areaVC.selectedArea = selectedArea
            self.present(areaVC, animated: true, completion: nil)
        } else {
            print("沒有選擇地區")
        }
    }
}

AreaView

今天稍微介紹版面設計的部分,明天教大家內部的功能怎麼設計!

IBOutlet

    @IBOutlet weak var TView: UITableView!
    @IBOutlet weak var btnCity: UIButton!
    @IBOutlet weak var lbCity: UILabel!

變數

    var selectedArea: String?  // 選擇的城市名稱
    var weatherData2: weatherData?  // API回傳的天氣數據

LifeCycle

        TView.delegate = self
        TView.dataSource = self
        TView.register(UINib(nibName: "AreaTableViewCell", bundle: nil), forCellReuseIdentifier: "AreaTableViewCell")

setUi

    func setUi() {
        btnCity.setTitle("選擇城市", for: .normal)
        lbCity.text = selectedArea
    }

上一篇
Day27. Swift一定要會の天氣API實作篇 (1)
下一篇
Day29. Swift一定要會の天氣API實作篇 (3)
系列文
我將點燃Swiftの大海30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言