Swift隨手紀錄Day17-新增成員頁面-UIView + UITableView

Darren
Swift

接續前兩天做的隊伍成員畫面SetNewTeamController 當時在實作時直接將整個畫面都用TableView製作 但是幾經思考,我覺得需要多一個按鈕在這個頁面上 使用者應該是經由這個按鈕來確認進入紀錄畫面 而非使用navigationItem的rightItem

接續前兩天做的隊伍成員畫面SetNewTeamController

當時在實作時直接將整個畫面都用TableView製作

但是幾經思考,我覺得需要多一個按鈕在這個頁面上

使用者應該是經由這個按鈕來確認進入紀錄畫面

而非使用navigationItem的rightItem

為此,我認為用一個UIViewController當主體

在上面再另外新增一個TableView是比較好的做法

首先一樣先看看完工的模樣

最底層是一個UIView,上面放一個tableView跟一個button作為subView

就來看看在程式碼內如何做出這樣的效果吧

import

class
SetNewTeamController
UIViewController
UITableViewDelegate
UITableViewDataSource
    
    let
=
"cellId"
    var
String
    private
var
UITableView
    
    override
var
Bool
        return
false
    }
    
    lazy
var
UIButton
=
        let
=
UIButton
        button.translatesAutoresizingMaskIntoConstraints =
false
        button.backgroundColor =
        button.layer.cornerRadius =
5
        button.layer.borderColor =
UIColor
        button.layer.borderWidth =
2
        button.setTitle("START"
        button.titleLabel?
=
UIFont
13
        button.addTarget(self
#selector
        return
    }()
    
    override
func
viewDidLoad
        super
        view.backgroundColor =
        
        let
=
UIBarButtonItem
"BACK"
self
#selector
        let
=
UIBarButtonItem
"ADD MEMBER"
self
#selector
        navigationItem.title =
        navigationItem.leftBarButtonItem =
        navigationItem.rightBarButtonItem =
        
        tableView =
UITableView
        tableView.register(UITableViewCell
self
        tableView.translatesAutoresizingMaskIntoConstraints =
false
        tableView.dataSource =
self
        tableView.delegate =
self
        
        view.addSubview(tableView)
        view.addSubview(startButton)
        
        tableView.topAnchor.constraint(equalTo: view.topAnchor).isActive =
true
        tableView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive =
true
        tableView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive =
true
        tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -
72
=
true
        
        startButton.topAnchor.constraint(equalTo: tableView.bottomAnchor, constant: 12
=
true
        startButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive =
true
        startButton.widthAnchor.constraint(equalToConstant: 72
=
true
        startButton.heightAnchor.constraint(equalToConstant: 48
=
true

    }
    
    func
backHome
        self
true
nil
    }
    
    func
toAddMemberController
        let
=
AddMemberController
        present(UINavigationController
true
nil
    }
    
    func
toRecordController
        let
=
RecordController
UICollectionViewFlowLayout
        present(UINavigationController
true
nil
    }
    
    func
numberOfSections
in
tableView
UITableView
Int
        return
1
    }
    
    func
tableView
_
tableView
UITableView
numberOfRowsInSection
section
Int
Int
        return
5
    }
    
    func
tableView
_
tableView
UITableView
cellForRowAt
indexPath
IndexPath
UITableViewCell
        let
=
UITableViewCell
UITableViewCellStyle
        cell.textLabel?
=
"MEMBER HERE"
        return
    }

}

首先就是把原本是UITableViewController子類別的SetNewTeamController修改一下

如同前面所提到的,我們需要一個UIViewController跟一個UITableView

因此繼承UIViewController, UITableViewDelegate, UITableViewDataSource這三個類別

然後宣告一個變數tableView

在viewDidLoad裡面(36~40)實作、註冊、設定delegate跟datasource

然後將tableView作為UIView的subView加入畫面

最後設定anchor(45~48)來決定tableView的大小

在這裡讓tableView上方跟左右對齊整個畫面

下方則向上縮72Point,以留一部分空間放置新增的button

後面一樣實作numberOfSectionsnumberOfRowsInSectioncellForRowAt

接下來就是新增一個按鈕一樣新增到畫面上

然後可以看到在navigationItem的rightItem我將動作從toRecordController換成了toAddMemberController

這就是下一篇要製作來新增隊伍成員的畫面.

Thanks for reading!

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