Swift隨手紀錄Day30-UIPickerView

Darren
Swift

今天有一整天可以用,花了一個早上Debug… 下午一咪眼就好幾小時噴了… 不過好歹也是把之前留著的自製popView裡面裝著UIPickerView的功能往前推進了一點 也學到了不少新東西 然後TabBar也先把基本的部分做好,順便重也寫了不少部分 但這片還是先看之前困擾我有點久的讓畫面跳出UIPickerView

今天有一整天可以用,花了一個早上Debug…

下午一咪眼就好幾小時噴了…

不過好歹也是把之前留著的自製popView裡面裝著UIPickerView的功能往前推進了一點

也學到了不少新東西

然後TabBar也先把基本的部分做好,順便重也寫了不少部分

但這片還是先看之前困擾我有點久的讓畫面跳出UIPickerView

一樣先看Demo

不過其實進度已經離上一次詳細寫出內容差了大概五光年遠…

認真回頭看真的不少該改寫的部分

這次也是在彼得潘講過之後才真的好好了解了navigationController推送的細節

然後才發現好像可以這樣做做看

首先在記錄的畫面點擊UPDATE時會觸發sentRecord這個function

func
sentRecord
sender
UIButton
    let
=
RecordPickerController
    controller.rowInRecordArray =
    controller.players =
self
    controller.modalPresentationStyle =
    present(controller, animated: true
nil
}

第3, 4行是用來傳資料的可以先忽視

主要是先設定送出來的controller的modalPresentationStyle

然後用present送出新畫面

然後來到要送出的畫面來

import

class
RecordPickerController
UIViewController
UIPickerViewDelegate
UIPickerViewDataSource
    
    let
=
"H"
"BB"
"E"
"K"
"SF"
    let
=
"H"
"2B"
"3B"
"HR"
"BB"
"HBP"
"E1"
"E2"
"E3"
"E4"
"E5"
"E6"
"E7"
"E8"
"E9"
"K"
"K"
"SF"
"SH"
    
    var
=
Player
    var
UIPickerView
    var
String
=
"H"
    var
=
Int
    
    let
UIView
=
        let
=
UIView
        view.backgroundColor =
        view.layer.borderWidth =
3
        view.backgroundColor =
        view.layer.cornerRadius =
5
        view.translatesAutoresizingMaskIntoConstraints =
false
        return
    }()
    
    let
UIButton
=
        let
=
UIButton
        button.translatesAutoresizingMaskIntoConstraints =
false
        button.backgroundColor =
        button.layer.cornerRadius =
5
        button.layer.borderColor =
UIColor
        button.layer.borderWidth =
2
        button.setTitle("UPDATE"
        button.titleLabel?
=
UIFont
13
        button.addTarget(self
#selector
        return
    }()
    
    override
func
viewDidLoad
        super
        view.backgroundColor =
        
        recordPickerView =
UIPickerView
        recordPickerView.frame =
CGRect
0
0
self
-
12
200
        recordPickerView.showsSelectionIndicator =
true
        recordPickerView.delegate =
self
        recordPickerView.dataSource =
self
        recordPickerView.backgroundColor =
        
        view.addSubview(popView)
        
        popView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive =
true
        popView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive =
true
        popView.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -
12
=
true
        popView.heightAnchor.constraint(equalToConstant: 250
=
true
        
        popView.addSubview(recordPickerView)
        popView.addSubview(addButton)
        
        addButton.bottomAnchor.constraint(equalTo: recordPickerView.bottomAnchor, constant: 12
=
true
        addButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive =
true
        addButton.widthAnchor.constraint(equalToConstant: 64
=
true
        addButton.heightAnchor.constraint(equalToConstant: 36
=
true

    }
    
    func
sendRecordBack
        let
=
GameTabBarController
        switch
        case
0
            self
0
        case
1
            self
1
        case
2
            self
2
        case
3
            self
3
        case
4
            self
4
        case
5
            self
5
        case
6
            self
6
        case
7
            self
7
        case
8
            self
8
        default
            return
        }
        controller.players =
self
        controller.modalPresentationStyle =
        present(controller, animated: false
nil
    }

    func
numberOfComponents
in
pickerView
UIPickerView
Int
        return
2
    }
    
    func
pickerView
_
pickerView
UIPickerView
numberOfRowsInComponent
component
Int
Int
    
        if
==
0
            return
        }
        return
0
    }
    
    func
pickerView
_
pickerView
UIPickerView
titleForRow
row
Int
forComponent
component
Int
String
        
        if
==
0
            return
        }
        return
0
    
    }
    
    func
pickerView
_
pickerView
UIPickerView
didSelectRow
row
Int
inComponent
component
Int
        
        if
==
0
            recordPickerView.reloadComponent(1
            tempRecord =
0
        } else
if
==
1
            tempRecord =
0
        }
    }
    
}

邊寫邊覺得自己對資料的傳遞跟儲存寫得真渣 ( ̄ c ̄)y▂ξ

只差沒翻桌了…

Thanks for reading!

I hope you found this article helpful. Feel free to share your thoughts or questions.