TIL
TIL ('21.03.18) - iOS View Life Cycle
learner._.Kio
2021. 3. 18. 23:07
학습내용
dismiss의 뜻은?
- to decide not to think about or consider (something or someone)
- to send (someone) away : to cause or allow (someone) to leave
- (고려할 가치가 없다고) 묵살[일축]하다 (=wave aside)
- (생각·느낌을) 떨쳐 버리다
- 해고하다 (=fire, sack)
iOS View Life Cycle
- Specify the views for a view controller using the loadView() method. In that method, create your view hierarchy programmatically and assign the root view of that hierarchy to the view controller’s view property.
- 뷰가 보여주고 사라지는 걸 왜 알아야할까?
- 앱이 언제 실행될 지 시점은 모르지만, 앱이 실행되었을 때 이벤트에 반응하는 코드들을 작성한다.
- ex) 애니메이션효과, 음악, 리스트
꼭 모든 걸 사용할 필요는 없고, 필요한 경우만 사용해도 된다.
loadView()
- Creates the view that the controller manages.
- 컨트롤러를 관리할 뷰를 만든다.== 스토리보드를 사용하면 이미 뷰가 있는 상태이기 때문에 굳이 없어도 된다.
- == 메인뷰를 로드할 때 호출되는 메서드
viewDidLoad()
- Called after the controller's view is loaded into memory.
- 뷰컨트롤러가 메모리에 로드된 이후 호출된다.
- == 메인뷰가 있으니 여기서 초기에 보여주고 싶은 걸 설정하거나 마음대로 할 수 있다.
viewWillAppear()
- Notifies the view controller that its view is about to be added to a view hierarchy.
- 뷰컨트롤러가 뷰 계층구조에 더해질 것을 알려준다.
- == 뷰가 이제 보여질 거라는 뜻!
viewDidApper()
- Notifies the view controller that its view was added to a view hierarchy.
- 뷰컨트롤러가 뷰 계층구조에 더해진 것을 알려준다.
- == 뷰가 벌써 보인다, 이미 보여졌다라는 뜻!
viewWillDisappear()
- Notifies the view controller that its view is about to be removed from a view hierarchy.
- 뷰컨트롤러가 뷰 계층구조에서 사라질 것을 알려준다.
- == 뷰가 곧 사라질 것이라는 뜻!
viewDidDisappear()
- Notifies the view controller that its view was removed from a view hierarchy.
- 뷰 컨트롤러가 뷰 계층구조에서 사라진 것을 알려준다.
- == 뷰가 벌써 사라졌다. 이미 없어졌다라는 뜻!
deinit{ }
- 메모리가 사라졌는지 확인
- 초기화 해제 작업
modal
- 현재 상태 그대로 잠깐 띄워준다.
- full screen으로 띄우면 그 이전 상태가 사라진다.
문제점/고민한점 → 해결방안
Q) init을 입력받게 하면서 기본값을 10으로 하려면 어찌해야할지 계속 고민...
class FruitStock {
private var fruit: FruitTypes
private(set) var stock: Int = 10
init(_ fruit: FruitTypes, _ stock) {
self.fruit = fruit
self.stock = stock
}
}
var fruitInformation: [FruitTypes: FruitStock] = [
.strawberry: FruitStock(.strawberry, 10),
.banana: FruitStock(.banana, 10),
.kiwi: FruitStock(.kiwi, 10),
.mango: FruitStock(.mango, 10),
.pineapple: FruitStock(.pineapple, 10)
]
- init에는 매개변수만 넣어야한다고 생각했는데, 기본값 10을 지정하면 되는 것이었다... hailey 만세 🙌
class FruitStock {
private var fruit: FruitTypes
private(set) var stock: Int
init(_ fruit: FruitTypes, _ stock = 10) {
self.fruit = fruit
self.stock = stock
}
}
var fruitInformation: [FruitTypes: FruitStock] = [
.strawberry: FruitStock(.strawberry),
.banana: FruitStock(.banana),
.kiwi: FruitStock(.kiwi),
.mango: FruitStock(.mango),
.pineapple: FruitStock(.pineapple)
]