Skip to content

Latest commit

 

History

History
97 lines (60 loc) · 3.03 KB

10차 스터디.md

File metadata and controls

97 lines (60 loc) · 3.03 KB

10차 스터디


  • 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도 마찬가지)

스크린샷 2020-04-03 오후 4 24 48

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]
    }

1234


  • 실제 프로젝트에서의 사용

    1235