Swift隨手紀錄Day14-新首頁Part3-TableView

Darren
Swift

防止偷懶Day14 昨天接上了首頁 接下來我希望首頁能用TableView顯示出已經登陸過的球隊 然後可以點擊球隊來進入之前寫的紀錄頁面 當然這樣也需要一個按鈕來新增球隊 以及一個讓球隊可以新增隊員資料的頁面

防止偷懶Day14

昨天接上了首頁

接下來我希望首頁能用TableView顯示出已經登陸過的球隊

然後可以點擊球隊來進入之前寫的紀錄頁面

當然這樣也需要一個按鈕來新增球隊

以及一個讓球隊可以新增隊員資料的頁面

首先就來看看做完的效果應該是怎麼一個樣子的

可以看到首頁先放了五個假資料,右上方放了一個button

點擊下去跳出一個alertController可以輸入新增的隊伍名稱

輸入完隊名(目前不輸也行)按下OK會進入新的球隊人員設定頁面

按下取消則是回到首頁不做任何事情

先到HomeController.swift進行修改

內容如下

import

class
HomeController
UITableViewController
    
    let
=
"cellId"
    
    override
var
Bool
        return
false
    }
    
    override
func
viewDidLoad
        super
        let
=
UIBarButtonItem
"New Team"
                                         style: .plain, target: self
#selector
        navigationItem.rightBarButtonItem =

    }
    
    func
toSetNewTeamController
        let
=
UIAlertController
"Add New Team"
""
        
        let
=
UIAlertAction
"OK"
            alert -> Void
in
            
            let
=
!
0
as
UITextField

            let
=
SetNewTeamController
            controller.teamTitle =
!
            self
UINavigationController
true
nil
        })
        
        let
=
UIAlertAction
"Cancel"
            (action : UIAlertAction
Void
in
        })
        
        alertController.addTextField { (textField : UITextField
Void
in
            textField.placeholder =
"Enter Team Name"
        }
        
        alertController.addAction(saveAction)
        alertController.addAction(cancelAction)
        
        self
true
nil
        
    }
    
    override
func
tableView
_
tableView
UITableView
numberOfRowsInSection
section
Int
Int
        return
5
    }
    
    override
func
tableView
_
tableView
UITableView
cellForRowAt
indexPath
IndexPath
UITableViewCell
        let
=
UITableViewCell
        
        cell.textLabel?
=
"TEAM LIST HERE"
        
        return
    }
    
    override
func
tableView
_
tableView
UITableView
didSelectRowAt
indexPath
IndexPath
        let
=
SetNewTeamController
        controller.teamTitle =
"Exit Team Name\(indexPath.row)
        present(UINavigationController
true
nil
    }
    
}

首先是將HomeController從UIViewController的子類別改成UITableView的子類別

然後實作numberOfRowsInSectioncellForRowAt回傳5個row跟帶有textLabel的cell

再來是在viewDidLoad內實作右上的Add Team button

按鈕的動作則放在toSetNewTeamController這個function裡面

在裡面我們新增一個UIAlertController

UIAlertController內包含一個textField跟兩個UIAction

兩個UIAction一個負責取消動作,另一個則負責將新隊伍名稱跟畫面帶到下一個Controller

最後在59行設定當首頁的Row被選擇時,會將畫面送到新增的SetNewTeamController

雖然目前只有轉換畫面,之後再把資料串起來

接下來就來看SetNewTeamController的內容

import

class
SetNewTeamController
UITableViewController
    
    let
=
"cellId"
    var
String
    
    override
var
Bool
        return
false
    }
    
    override
func
viewDidLoad
        super
        
        self
=
        
        let
=
UIBarButtonItem
"BACK"
                                         style: .done, target: self
#selector
        navigationItem.leftBarButtonItem =
        
        let
=
UIBarButtonItem
"START"
                                         style: .plain, target: self
#selector
        navigationItem.rightBarButtonItem =
        
        
    }
    
    func
backHome
        self
true
nil
    }
    
    func
toRecordController
        let
=
RecordController
UICollectionViewFlowLayout
        present(UINavigationController
true
nil
    }
    
    override
func
tableView
_
tableView
UITableView
numberOfRowsInSection
section
Int
Int
        return
5
    }
    
    override
func
tableView
_
tableView
UITableView
cellForRowAt
indexPath
IndexPath
UITableViewCell
        let
=
UITableViewCell
        cell.textLabel?
=
"MEMBER HERE"
        return
    }
    
}

SetNewTeamController一樣使用tableView

並在navigationBar左右各放一個button

左邊leftBarButtonItem負責回到home

又邊rightBarButtonItem負責將畫面送到RecordController

並且navigationItem.title放上從home page設定的隊伍名稱

Done~

接下來預計做選手新增用的畫面

Thanks for reading!

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