코드로 뷰 제어
뷰 구조 생성 이후 뷰 제어하기
- 앱 동작 중 컨텐츠 변경
- 런타임 시 뷰 구조 변경
코드로 작성한 뷰 제어
class Viewcontroller: UIViewController {
var redView: UIView!
override func viewDidAppear(animated: Bool) {
redView.backgroundColor = UIColor.gray
}
override func viewDidLoad() {
redView = UIView(frame: frame)
self.view.addSubview(redView)
}
}
뷰의 태그로 접근
각 뷰마다 tag
라는 프로퍼티가 있는데 이는 일종의 일련번호이다. 이 태그로 접근할 수 있다. 기본값은 0이므로 태그를 사용하기 위해서는 0 이외의 값을 사용해야 한다.
아래 그림은 속성 인스펙터에서 태그 값을 99로 지정해준 것이다.
var tag: Int
// 해당 태그를 가진 UIView를 반환
func viewWithTag(_ tag: Int) -> UIView?
자신의 하위 뷰 중에서 해당 태그를 가진 뷰를 반환한다. 해당 뷰를 찾을 때에는 recursive하게 동작한다. 옵셔널로 찾는 뷰가 없으면 nil을 반환한다.
override func viewDidAppear(animated: Bool) {
// 태그를 이용해서 뷰 다루기
if let view99 = self.view.viewWithTag(99) {
view99.backgroundColor = UIColor.gray
}
}
아웃렛
- 뷰와 코드(프로퍼티) 연결
- 프로퍼티는 @IBOutlet 지시자가 붙은 것
연결방법
- 뷰에서 코드 작성하면서 연결
- 아웃렛 프로퍼티에서 뷰로 연결
- 커넥션 인스펙터에서 연결
아웃렛 프로퍼티와 ARC
- strong
- 코드로 작성한 프로퍼티
- 화면에서 삭제되어도 아웃렛 프로퍼티에서 계속 소유가 유지됨
- 화면에서 삭제한 후에 다시 추가되어야 할 때 사용
- weak
- 인터페이스 빌더로 작성
- 화면에서 삭제되면 객체 해제됨
'iOS > iOS' 카테고리의 다른 글
iOS) NSCoding과 Archive를 통한 데이터 저장 - (1) (0) | 2020.09.20 |
---|---|
iOS) 레이아웃(1) - 인터페이스 빌더 (0) | 2020.08.23 |
iOS) Scene(3) - 코드로 씬 작성 (0) | 2020.08.17 |
iOS) Scene(2) - 인터페이스 빌더로 씬 작성 (0) | 2020.08.17 |
iOS) Scene(1) - 씬이란? (1) | 2020.08.17 |