基本的なTable Viewの作成
23446 ワード
表ビュー
各セルにラベルとボタンがあるテーブルビューを作成します.
表ビューを作成するには、次の2つの方法があります.
また、Custom UItableViewCellクラスを作成し、UItableViewDataSourceのCellForRowAtメソッドのDequeueReusableCell()インポートユニットを作成します.
(次のプロンプトでは、セルスタイルを設定する方法で試します)
1.シーケンスイメージボードの設定
ドラッグ&ドロップ
2.カスタムビューの作成
カスタム表ビューユニットタイプを作成します.
どうして?表ビューですべてのセルを個別に設定するのは難しいです.
1)新しいFile-Cocoa Touch Class-UItableViewタイプのクラスを作成する
2)LabelをドラッグしてIBOUTLETに接続する
3)Labelのデフォルト設定に使用するconfigure()メソッドを定義し、
awakeFromNib()
で実行class TableViewCell: UITableViewCell {
@IBOutlet weak var label: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
configure()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func configure() {
label.text = "텍스트"
label.textColor = .brown
label.font = .boldSystemFont(ofSize: 12)
}
@IBAction func button(_ sender: UIButton) {
print("잘 눌렸다.")
}
}
3.Table View Cellの識別子の設定
後で、ViewControllerからUItableViewDataSourceプロトコルを使用して実装する必要がある方法でTableビューのセルを取得する場合(4-2).
は、現在実装されているこの特定のカスタムタイプのユニットを識別して入力するために命名されたものです.
4.ViewControlの設定
1)テープビューをドラッグしiBoutletに接続する
2)UItableViewDataSourceプロトコルを使用して実装する必要がある2つの方法:
numberOfRowsInSection
,cellForRowAt
->いずれにしてもtable viewを描くには、基本的にどのくらいの行があるかを知る必要があるので、実現しなければなりません*UItableViewDataSourceとは何ですか?
:table viewがviewconに何行とsectionがあるかを尋ねると、ロールのプロトコルが定義されます.
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self // 테이블뷰에게 뷰컨이 데이터소스를 가진다고 알려주기
tableView.delegate = self
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//요기서 아까 커스텀 셀 뷰에서 준 identifier을 쓴다
//여기서 쓸 셀은 아까 만들어준 zoe라는 커스텀 셀이야~~~
let cell = tableView.dequeueReusableCell(withIdentifier: "zoe", for: indexPath) as! TableViewCell
return cell
}
}
3)UItableViewDelegateプロトコルを使用した関連メソッドの実装(必須ではない)-didSelectRowAt
セルをクリックして文字列「セルの選択」を出力します.extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("셀 선택")
//이거 안하면 클릭했을 때 변한 셀의 색이 그대로 남아있음
tableView.deselectRow(at: indexPath, animated: true)
}
}
4)ViewコントローラをTable Viewに割り当てるデータソース構成5)ViewコントローラをTable Viewに割り当てる委任プロセス
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
}
}
結果
その他の実施
extension ViewController: UITableViewDataSource {
//Section을 몇개 구현할건지
func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
//Section 이름은 뭘로 할건지
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
// 섹션 이름을 다르게 주고싶을 때
if section == 0 {
return "첫번째"
} else {
return "두번째"
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "zoe", for: indexPath) as! TableViewCell
//셀 이름을 다르게 주고싶을 때
let array = ["1", "2", "3", "4", "5"]
cell.label.text = array[indexPath.row]
print(indexPath)
return cell
}
}
self.selectionStyle = .blue
機能しないUIViewタイプインスタンスの色を設定し、セルのSelectedBackgroundView
class TableViewCell: UITableViewCell {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var button: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
configure()
//셀클릭시 나오는 배경색 설정
let backgroundView = UIView()
backgroundView.backgroundColor = .blue
self.selectedBackgroundView = backgroundView
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
func configure() {
label.text = "텍스트"
label.textColor = .brown
label.font = .boldSystemFont(ofSize: 12)
self.selectionStyle = .default
button.titleLabel?.text = "버튼"
}
@IBAction func button(_ sender: UIButton) {
print("잘 눌렸다.")
}
}
結果
Reference
この問題について(基本的なTable Viewの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@dev_jane/Table-Viewテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol