# Untitled

**UIViewController + UITableView ** vs. **TableViewController** 

- TableViewController에서 테이블 형태의 뷰를 만들어가면, 

    - 이후 앱 디자인이 변경될 경우 더 많은 작업을 해야 할 수 있겠다. 혹은 ViewController자체를 바꿔야 할 수도 있을 것 같다.

    - 또한, 자유롭게 UI 요소를 컨트롤하기 어렵다는 한계를 마주해야 한다.

- 그래서 보통, 

    - UIViewController 위에다가 UITableView 요소를 올리는 방식으로 개발 작업의 자유도를 높인다.

    - 물론, 이렇게 작업할 경우 상속 관계의 차이가 있어서 테이블 작업을 할 때의 방식이 차이가 날 수 있다. (그냥 난다라고 보면 된다.)

그러면, UIViewController + UITableView 조합으로 코드는 어떻게 작성할까?

1. UIViewController의 특정 위치에 UITableView를 얹는다. 필요에 따라서 TableView 객체를 Outlet 속성으로 잡는다.

2. UIViewController 클래스를 상속받은 클래스에 TableView를 다루기 위한 두 개의 프로토콜을 연결한다.

- UITableViewDelegate

- UITableViewDataSource

3. viewDidLoad 메서드에서 TableView의 두 프로토콜을 클래스 인스턴스 자체로 설정해준다.

```javascript
override func viewDidLoad() {
  super.viewDidLoad

  tableView.delegate = self
  tableView.dataSource = self
}
```

4. 이후 UITableViewController에서 주로 사용하던 tableView(.., numberOfRowsInSection), tableView(.., cellForRowAt) 메서드 코드를 작성해준다.

For the site tree, see the [root Markdown](https://slashpage.com/hankyeol.md).
