2017-04-06 123 views
0

XLPagertabStrip网点我想创造使用XLPagerTabStrip自定义选项卡,我米使用BaseButtonBarPagerTabStripViewController定制的CollectionView细胞。但我m到处的问题是,我不是能Buttonbarview和containerview从我的类连接,可以请你帮助我。贝娄是我的课无法连接使用BaseButtonBarPagerTabStripViewController与自定义单元格

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

最后,我的回答得到了这一点,我男张贴,在XLPagerTabStrip的情况下,它不工作,当我们设定从故事板的初始视图 - 控制。它只能当我们编程方式启动它,这就是使用这个库的时候,我做了唯一的错误。谢谢!

 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()