Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 양궁대회
- UserDefaults
- firebase
- wil
- SWIFT
- tableview section별 다른 cell적용
- Array vs Linked List
- 롤케이크 자르기
- 프로그래머스
- class struct
- 면접을 위한 CS전공 지식 노트
- Value Type Reference Type
- CoreData
- Reference Cycle
- TableView Section
- 강한 참조 순환
- Input Output
- UIKit
- retain cycle
- til
- ReferceCycle
- TableView
- 자료구조
- CarouselCollectionview
- NavigationSearchBar
- 테이블뷰 나누기
- 면접을 위한 CS 전공 지식 노트 Tree
- Carousel CollectionView
- coremotion
- @escaping
Archives
- Today
- Total
개발하는 동글 :]
[TIL],[UIKit],[Essue],[ButtonTitle이 변경되지 않는 이슈] 본문
1. 문제 상황
- Observable
class Observable<T> {
var value: T {
didSet {
listener?(value)
}
}
private var listener: ((T) -> Void)?
init(_ value: T) {
self.value = value
}
func bind(_ closure: @escaping (T) -> Void) {
closure(value)
listener = closure
}
}
- ViewModel
final class FTOPViewModel {
var rangeBTtitle: Observable<String> = Observable("단어장 선택")
var vocaList: Observable<[VocabularyEntity]> = Observable([])
}
- bind
viewModel.vocaList.bind { [weak self] list in
guard let self = self else {return}
if list.isEmpty {
viewModel.rangeBTtitle.value = "단어장 선택"
} else {
viewModel.rangeBTtitle.value = "총 \(viewModel.vocaList.value.count)개의 단어장"
}
}
viewModel.rangeBTtitle.bind { [weak self] text in
DispatchQueue.main.async { [weak self] in
guard let self = self else {return}
self.rangeButton.setTitle(text, for: .normal)
}
print("$$$\(text)")
}
위와 같이 배열이 변경됨에 따라 버튼의 타이틀을 변경하려 하였으나 버튼의 타이틀이 변경되지 않는 이슈가 발생하였다.
위와 같이 print문을 통하여 text가 찍히는 것을 확인해 보았는데 text는 잘 전달이 된다. 심지어 버튼이 아닌 일반 라벨에 텍스트를 변경하는 것은 문제없이 된다.
2. 시도 방법
- rangebutton이 커스텀 버튼이기에 일반 UIButton으로 변경하여 시도
- 단어장 선택의 modal의 높이를 기존의 높이와 동일하게 만들기
- main큐에 넣어서 하기
- setTitle 말고 rangeButton.titleLabel?.text 변경하기
3. 시도해 볼 방법
- button이 아니라 label로 시도하기
4. TIL
1. 오늘의 회고
- 제네릭의 사용 및 observable pattern 사용연습을 위해 observable 클래스를 만들어 사용을 연습해 보았다.
- 프로젝트의 담당 부분을 작업하였다.
2. 내일의 목표
- 연휴기간 TIL을 소홀히 하였다! 꾸준히 TIL작성하기!
- 팀프로젝트 담당 기능 구현
- 현 이슈 해결하기
- 팀프로젝트 발표 준비