2017-04-06 5 views
0

カスタムコレクションビューセルでBaseButtonBarPagerTabStripViewControllerを使用してXLPagerTabStripを使用してカスタムタブを作成したかったのです。しかし、問題は、ボタンバービューとコンテナビューをクラスから接続できないことです。私を助けてください。ベローはカスタムセルでBaseButtonBarPagerTabStripViewControllerを使用してXLPagertabStripコンセントを接続できません

import Foundation 
import XLPagerTabStrip 

class YoutubeExampleViewController: BaseButtonBarPagerTabStripViewController<YoutubeIconCell> { 

    let redColor = UIColor(red: 221/255.0, green: 0/255.0, blue: 19/255.0, alpha: 1.0) 
    let unselectedIconColor = UIColor(red: 73/255.0, green: 8/255.0, blue: 10/255.0, alpha: 1.0) 

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { 
     super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 

     buttonBarItemSpec = ButtonBarItemSpec.nibFile(nibName: "YoutubeIconCell", bundle: Bundle(for: YoutubeIconCell.self), width: { (cell: IndicatorInfo) -> CGFloat in 
       return 55.0 
     }) 
    } 

    override func viewDidLoad() { 
     // change selected bar color 

     settings.style.buttonBarBackgroundColor = redColor 
     settings.style.buttonBarItemBackgroundColor = .clear 
     settings.style.selectedBarBackgroundColor = UIColor(red: 234/255.0, green: 234/255.0, blue: 234/255.0, alpha: 1.0) 
     settings.style.selectedBarHeight = 4.0 
     settings.style.buttonBarMinimumLineSpacing = 0 
     settings.style.buttonBarItemTitleColor = .black 
     settings.style.buttonBarItemsShouldFillAvailableWidth = true 
     settings.style.buttonBarLeftContentInset = 0 
     settings.style.buttonBarRightContentInset = 0 



     changeCurrentIndexProgressive = { [weak self] (oldCell: YoutubeIconCell?, newCell: YoutubeIconCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in 
      guard changeCurrentIndex == true else { return } 
      oldCell?.iconImage.tintColor = self?.unselectedIconColor 
      newCell?.iconImage.tintColor = .white 

     } 
     super.viewDidLoad() 
     navigationController?.navigationBar.shadowImage = UIImage() 
     navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) 
    } 

    // MARK: - PagerTabStripDataSource 

    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] { 
     let child_1 = FeedsTableViewController(style: .plain, itemInfo: IndicatorInfo(title: " HOME", image: UIImage(named: "c1"))) 
     let child_2 = FeedsTableViewController(style: .plain, itemInfo: IndicatorInfo(title: " TRENDING", image: UIImage(named: "d1"))) 
     return [child_1, child_2] 
    } 


    override func configure(cell: YoutubeIconCell, for indicatorInfo: IndicatorInfo) { 
     cell.iconImage.image = indicatorInfo.image?.withRenderingMode(.alwaysTemplate) 
    } 

    override func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool) { 
     super.updateIndicator(for: viewController, fromIndex: fromIndex, toIndex: toIndex, withProgressPercentage: progressPercentage, indexWasChanged: indexWasChanged) 
     if indexWasChanged && toIndex > -1 && toIndex < viewControllers.count { 
      let child = viewControllers[toIndex] as! IndicatorInfoProvider 
      UIView.performWithoutAnimation({ [weak self]() -> Void in 
       guard let me = self else { return } 
       me.navigationItem.leftBarButtonItem?.title = child.indicatorInfo(for: me).title 
      }) 
     } 
    } 

    // MARK: - Actions 

    @IBAction func closeAction(_ sender: UIButton) { 
     dismiss(animated: true, completion: nil) 
    } 
} 

答えて

0

私のクラスである最後に、私はこれに答えを得た、と私たちはストーリーボードから初期のViewControllerを設定すると、私は今それを掲示M、XLPagerTabStripの場合、それは仕事をdoesntの。これは、プログラムで起動するときにのみ機能します。このライブラリを使用するときに私が作成した唯一の間違いです。ありがとう!

 let _ = YoutubeExampleViewController(nibName: nil, bundle: nil) 
    let sb = UIStoryboard(name: "Main", bundle: nil) 
    let tabBarViewController = sb.instantiateViewController(withIdentifier: "YoutubeExampleViewController") 
    let nav = UINavigationController(rootViewController: tabBarViewController) 
    window = UIWindow(frame: UIScreen.main.bounds) 
    window?.rootViewController = nav 
    window?.makeKeyAndVisible() 
関連する問題