iOS & Swift 공부 - IBOutlet 도 상속이 가능한가?

김영채 (Kevin)·2021년 5월 11일
1

iOS & Swift

목록 보기
104/107
post-thumbnail

현재 만들고 있는 앱에 Review Table View Cell 을 만들어야 한다. 사용자들이 맛집을 리뷰할 수 있게 하고, 등록된 리뷰들을 UITableView에 담아 보여줄 예정이다. 만들고자 하는 Review Cell은 아래와 같은 디자인이다.

그런데 사용자가 리뷰를 작성할 때 이미지를 첨부 안 한다면?? 그렇다면 그에 따라 Table View Cell 이 바뀌어야 한다. 즉, Image View 가 없어야 하는데, 그러려면 일단 새로운 xib 파일을 만들어 Image View 가 없는 Cell 을 만들어줘야 한다.

하지만 생각해보니, 새로 만들 Review Cell 은 기존 Cell 과 거의 똑같을 것이다. 딱 Image View만 없을건데, 기존에 만든걸 그대로 상속할 수는 없을까 생각했다. 물론 상속하면 function 이랑 property 들은 당연히 된다. 그치만 의문이었던게, IBOutlet 도 그대로 상속이 되는가였다.

결론부터 말하자면 된다!


내가 만든 Review Table View Cell이다. 보다시피 연결된 IBOutlet 들이 다양하게 있다. 새로 만들고자 하는 Cell 은 ReviewWithoutImageTableViewCell 이다.

ImageView 만 없지, 다른 부분은 완벽하게 동일하다.

해당 Cell 을 위한 Cocoa Touch Class (UITableViewCell) 파일을 만들어주고, 이름은 좀 길긴하지만 일단 ReviewWithoutImageTableViewCell 로 지어줬다.

중요한 점은, 이 Cell 은 앞서 만든 ReviewTableViewCell 을 상속한다는 것이다. ReviewTableViewCell 은 기본적으로 UITableViewCell 을 상속하기 때문에, TableViewCell 의 모든 기능 + 내가 추가한 변수와 메서드를 사용할 수 있게 된다.

그리고 제일 궁금했듯이, IBOutlet 도 그대로 상속된다. ReviewWithoutImageTableViewCell 파일을 보면 따로 정의한 IBOutlet 변수들이 없는 모습을 확인할 수 있다.

연결된 IBOutlet 은 모두 여기 있다! (물론 새로 연결은 해줘야함)


ReviewWithoutImageTableViewCell 에서는 ReviewTableViewCell 에서 정의한 메서드들도 모두 상속하기 때문에, 해당 함수를 좀 다르게 쓰고 싶으면 override 키워드를 붙여주면 된다.

profile
맛있는 iOS 프로그래밍

0개의 댓글