- XLPagerTabStrip pod 적용해보기
- XLPagerTabStrip
- 이쁘고 적용하기도 쉽고, 커스텀하기도 편함
다음과 같이 pod 설치
pod 'XLPagerTabStrip', '~> 9.0'
import XLPagerTabStrip
Main 뷰컨과 ChildeViewController만든 후 import XLPagerTabStrip 해준다.
- ViewController에 UIViewController를 지워버리고 다음과 같이 ButtonBarPager를 상속 및 적용한다.
class ViewController: ButtonBarPagerTabStripViewController
- StoryBoard에 CollectionView를 추가해주고 ButtonBarView Class를 상속시켜준다.
- StoryBoard에 ScrollView를 원하는 사이즈에 맞게 추가해주고 AutoLayout을 잡아준다. (CollectionView도 마찬가지)
ChildViewController에 다음과 같이 코드 추가
- IndicatorInfoProvider는 PagerTap에 나올 이름과 뷰컨을 재활용해서 화면에 보여줌
- func indicatarInfo는 각 화면에 맞는 Label값을 인디케이터 이름으로 리턴
import UIKit
import XLPagerTabStrip
class ChildViewController: UIViewController, IndicatorInfoProvider {
var childNumber: String = ""
@IBOutlet weak var childNameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
childNameLabel.text = childNumber
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {
return IndicatorInfo(title: "\(childNumber)")
}
}
- MainViewController에서 다음과 같이 Paging될 화면과 뷰컨 재활용으로 화면 표시
- 꼭 viewControllers 함수를 오버라이딩해서 뷰컨 표시해줘야함, 그렇지 않으면 스레드에러 (Why?표시할 뷰컨 내용이 스크롤뷰에 나오지 않기 때문)
- ChildViewController 의 내용은 메인뷰컨의 스크롤뷰에 적용되어 표시됨
override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
let child1 = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildVC") as! ChildViewController
child1.childNumber = "One"
let child2 = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildVC") as! ChildViewController
child2.childNumber = "Two"
return [child1, child2]
}