본문 바로가기
iOS/Swift

swift Xib에 CustomView넣기

by DnaJ 2018. 11. 17.
반응형

Swift Xib에 CustomView 넣기


뷰 재사용을 위하여 CustomView를 만들어 StoryBoard나 xib에 다시 넣는 방법!!!

아.....주로 Objective-C 에서 사용하던 방법이 있었지만 그게 사라졌다.....어떻게 하는지 모르겠다!!!!!!


제발 같은 UI는 재사용 했으면 좋겠다. 여기저기 똑같은 UI가 ctl C + V 되어있는 것을 유지보수 할때마다 가끔 열이 받는다(물론 코드 1도 틀리지 않고....).


간단한 U를 만들어봤다.

UILabel + UITextField + UIViwe(Underline)


1. TitleTextField.xib , TitleTextField.swift 파일을 생성 후 아래와 같이 UI를 만들었다 (만들고 싶은 UI를 만들자)

xib와 swift는 같은 이름으로 만든다. 다른 이름으로 만들어도 상관은 없지만 같은 이름으로 만들어야지 나중에 찾기 쉽다. 



2. Placeholders 아래 항목중 Files's Owner를 선택 한다.

필자도 맨날 까먹기 때문에 친전하게 스크린샷을 첨부 ㅎㅎ



3. Xcode의 오른쪽을 보면 화살표? (break point를 돌려놓은 듯한 아이콘)을 눌러 Class란에 Swift파일의 이름을 적는다. (TitleTextField 를 적었다.)



이제는 Swift File에 가서 직접 코딩을 할것이다


4. 아래와 같이 코딩을 한다!!!!


class TitleTextField: UIView {


    @IBOutlet var title: UILabel!

    @IBOutlet var textField: UITextField!

    @IBOutlet var underline: UIView!

    

    

    //xib에서 로드할때

    required init?(coder aDecoder: NSCoder) {

        super.init(coder: aDecoder)

        //코드로 생성할 때는 주석처리 해준다.

        commonInit()

    }


    func commonInit() {

        let view = Bundle.main.loadNibNamed("TitleTextField", owner: self, options: nil)?.first as! UIView

        view.frame = self.bounds

        self.addSubview(view)

    }

}   


init함수의 목적이 다르니 알아두자. 필자는 xib로 로드를 하려고 한다.

간혹 무한루프가 발생하여 죽는 경우가 있다. 그건 xib설정이 잘못된 경우에 발생한다. 



5. 다른 xib혹은 story board에 넣기!!

UIView를 넣고 Custom Class의 Class란에 Class이름을 넣자(음...?) 그럼 끝이다. Preview가 나오진 않지만 실행하면 원하는 View가 잘나온다.

물론 xib에 Preview효과가 없다... 하려면  TitleTextFeild(CustomView)Class에 @IBDesignable을 넣으면 된다고 하지만 이상하게 에러가 발생한다.

시간날때 다시 알아봐야겠다.

 



마지막 실행화면!!!

여러개 붙여 넣었다ㅎㅎ




반응형

'iOS > Swift' 카테고리의 다른 글

RxSwift (ReactiveX)  (0) 2019.04.26
Swift Contacts read and write (주소록 읽기, 쓰기)  (0) 2019.01.13
Swift Realm (2) - 조회하기  (0) 2019.01.06
Swift Realm (1)  (0) 2018.12.06
Swift Xib localization  (0) 2018.11.18

댓글