스택 뷰(Stack View)는 iOS 애플리케이션에서 사용자 인터페이스를 구성하는데 유용한 컨테이너 뷰입니다. 스택 뷰를 사용하면 다양한 뷰를 쉽게 정렬하고 관리할 수 있습니다. 스택 뷰에 테이블 뷰를 추가하는 방법을 알아보겠습니다.
1. 스택 뷰 생성하기
먼저, 스토리보드 또는 코드를 통해 스택 뷰를 생성해야 합니다. 스토리보드에서 스택 뷰를 추가하려면 UIStackView
를 선택하고 인터페이스 빌더의 화면에 드래그하여 추가할 수 있습니다. 코드로 스택 뷰를 생성하려면 다음과 같이 작성할 수 있습니다.
let stackView = UIStackView()
stackView.axis = .vertical
stackView.spacing = 10
stackView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(stackView)
// 스택 뷰의 제약 조건 설정
NSLayoutConstraint.activate([
stackView.topAnchor.constraint(equalTo: view.topAnchor, constant: 20),
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
stackView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -20)
])
위의 코드에서 스택 뷰의 axis
속성은 수직으로 정렬되도록 설정되어 있습니다. spacing
속성은 뷰들 사이의 간격을 조정하는 역할을 합니다. translatesAutoresizingMaskIntoConstraints
속성은 스택 뷰의 자동 제약 조건 설정을 비활성화하는 역할을 합니다.
2. 테이블 뷰 추가하기
스택 뷰에 테이블 뷰를 추가하려면 다음과 같이 작성할 수 있습니다.
let tableView = UITableView()
stackView.addArrangedSubview(tableView)
addArrangedSubview
메서드를 사용하여 스택 뷰의 정렬된 뷰 목록에 테이블 뷰를 추가합니다.
3. 테이블 뷰 설정하기
이제 테이블 뷰를 설정해보겠습니다. 테이블 뷰의 셀을 표시하기 위해 UITableViewDataSource
프로토콜을 구현해야 합니다. 또한, 테이블 뷰에 셀을 등록하고 데이터를 제공하는 방법을 설정해야 합니다. 예를 들어, 다음과 같이 할 수 있습니다.
class ViewController: UIViewController, UITableViewDataSource {
// ...
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = data[indexPath.row]
return cell
}
}
위의 코드에서 data
는 테이블 뷰에 표시할 데이터의 배열입니다. cellForRowAt
메서드를 사용하여 셀의 텍스트를 설정하고 반환합니다. dequeueReusableCell(withIdentifier:for:)
메서드를 사용하여 재사용 가능한 셀을 가져옵니다.
4. 결과 확인하기
마지막으로, 애플리케이션을 실행하여 생성한 스택 뷰에 테이블 뷰가 올바르게 표시되는지 확인할 수 있습니다. 스택 뷰의 크기와 테이블 뷰의 크기는 제약 조건을 통해 조정됩니다.
위에서 작성한 코드를 실행해보고 스택 뷰에 테이블 뷰가 추가되는지 확인해보세요.
참고 자료
- Apple Developer Documentation - UIStackView
- Apple Developer Documentation - UITableView
- Hacking with Swift - How to add a UITableView to a UIStackView