[iOS] tableView 이용 토이프로젝트 (feat. FacebookMe)
IT/IOS

[iOS] tableView 이용 토이프로젝트 (feat. FacebookMe)

첫 주차를 TableView를 다뤄보기로 하였고, 30개의 project 중 하나인 FacebookMe를 만들어보기로 했다.

https://github.com/M1zz/FacebookMe

 

GitHub - M1zz/FacebookMe

Contribute to M1zz/FacebookMe development by creating an account on GitHub.

github.com

테이블 뷰 -> 테이블 뷰 셀 -> 셀마다 imageView, Label 배치 후 

오토레이아웃 설정 

일단 희망하는 위치에 배치한다.

- x,y, width, height 모두 잡아야한다. 

- 나는 수평,수직 위치 잡고, 거기에 따른 x,y를 잡고, 그 다음에 내용물에 따라 weight, height를 잡아주는 게 좋다고 생각했다. 


스토리보드와 viewcontroller와의 연결 

연결한다. (진짜진짜 하면 안되는 대표적인 예시) 

대표적인 잘못된 예

이렇게 ViewController에 모든 IBOutlet을 연결했더니, 다음과 같은 오류가 발생하였다.  

Oultets cannot be connected to repeating content.  

IBOutlet이 반복되는 컨텐츠에 연결될 수 없단다. 


뷰 컨트롤러가 로드되었을 때, 테이블 뷰 셀이 없기 때문에 IBOutlet이 연결될 방법이 없다고 한다. 

그러니 subclass를 만들어서 셀들을 연결해서 사용하라고 한다. 


그래서 나는 셀마다 파일을 만들어주고, identifier를 부여해주었다.


내가 했던 잘못된 방법에 대해 다시 곰곰히 생각해보았다.

ViewController에 처으메 UItableView를 연결해서 테이블뷰가 생성되었다고 치자. (여기까지 좋음)
근데, 모든 Oultet들은 테이블뷰가 아닌 테이블뷰셀에 있는거다. 
근데, 테이블뷰에 모든 요소들을 연결해놓았으니, 말이 안되지.. 


그래서 해결방법은? -> subclassing 하면 된다.

아래 스택오버플로우 글을 참고하여 해결하였다. 

https://stackoverflow.com/questions/26561461/outlets-cannot-be-connected-to-repeating-content-ios

 

Outlets cannot be connected to repeating content iOS

I have just created an app and have started hooking up @IBOutlet's to the storyboard. I am connecting some of them to labels in a UITableViewCell Prototype Cell with a Basic Style. When I connect it

stackoverflow.com

 

Header 만들기 

1. 테이블뷰에 뷰를 register를 준다.

2. 헤더에 들어가는 text를 지정하고 싶어서, titleForHeaderInSection이 들어간 메소드를 이용했다. 

3. header의 크기를 설정하고 싶어서, heightForFooterInsection이 들어간 메소드를 이용했다.



완성