본문 바로가기

iOS/iOS

iOS) Scene(4) - 코드로 뷰 제어

코드로 뷰 제어

뷰 구조 생성 이후 뷰 제어하기

  • 앱 동작 중 컨텐츠 변경
  • 런타임 시 뷰 구조 변경

코드로 작성한 뷰 제어

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로 지정해준 것이다.

View Tag

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
    • 인터페이스 빌더로 작성
    • 화면에서 삭제되면 객체 해제됨