반응형
오늘 공부했던 부분은 CustomTableViewCell 입니다.
CustomTableViewCell이 무엇이냐!
TableView에서는 한 row을 Cell이라는 단위로 정의가 되고있다.
TableView에서는 한 cell에 text가 들어갈 수 있는 부분이 정의되어있고 이 부분을 개발자가 구현할 수 있다.
다만 cell에 다른 컴퍼넌트가 들어가게 된다면 이야기가 달라진다.
이러한 경우에 사용하는것이 CustomTableViewCell이다.
우선 CustomTableViewCell을 사용하기 위해서는 다른 class를 만들어야한다.
그래서 UITableViewCell를 상속받아하는 class를 만들어주고 tableView의 register함수를 이용하여 cell을 등록하고
cellForRowAt를 파라미터를 받는 필수 구현함수에서 cell안에 들어가는 data를 넣어주는 방식이다.
이번에 해본것은 cell안에 button과 label을 넣는 부분이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
class CustomTableViewCell: UITableViewCell{
let plusButton: UIButton = {
let button = UIButton(type: .system)
button.setTitle("+", for: .normal)
button.backgroundColor = .lightGray
button.setTitleColor(.white, for: .normal)
return button
}()
let minusButton: UIButton = {
let button = UIButton(type: .system)
button.setTitle("-", for: .normal)
button.backgroundColor = .lightGray
button.setTitleColor(.white, for: .normal)
return button
}()
let countLabel: UILabel = {
let label = UILabel()
label.text = "1"
label.textAlignment = .center
return label
}()
let itemNameLabel: UILabel = {
let label = UILabel()
label.text = ""
label.textAlignment = .center
return label
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
// contentView에 서브뷰 추가
contentView.addSubview(plusButton)
contentView.addSubview(minusButton)
contentView.addSubview(countLabel)
contentView.addSubview(itemNameLabel)
// SnapKit을 사용하여 레이아웃 설정
plusButton.snp.makeConstraints { make in
//make.trailing.equalTo(countLabel.snp.leading).inset(50)
make.centerY.equalToSuperview()
make.height.equalTo(20)
make.width.equalTo(20)
}
minusButton.snp.makeConstraints { make in
//make.trailing.equalToSuperview().offset(-5)
make.centerY.equalToSuperview()
make.height.equalTo(20)
make.width.equalTo(20)
}
countLabel.snp.makeConstraints { make in
make.leading.equalTo(plusButton.snp.trailing).offset(5)
make.trailing.equalTo(minusButton.snp.leading).offset(-5)
make.centerY.equalToSuperview()
make.height.equalTo(30)
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
|
cs |
일단 구현을 해본 코드이다.
조금 더 정리가 된다면 다시한번 올리도록 하겠습니다.
반응형
'Ios > Swift' 카테고리의 다른 글
[Swift] ViewController 생명주기에 대한 끄적임.. (0) | 2024.07.09 |
---|---|
[Swift] Delegate 패턴 개념 잡기 (0) | 2024.07.05 |
[Swift] Optional타입을 print하면 Optional(value)라고 나오는 이유 (0) | 2024.06.27 |
[Swift] NSExpression과 expressionValue (0) | 2024.06.25 |
[Swift] 앱 생명주기 (App Lifecycle) .IOS (0) | 2024.06.19 |