以下是在您的项目中使用 XLPagerTabStrip 库的步骤:
Step 1:在Storyboard上拖一个VC(据说是Intial VC),在这个VC上拖一个Container View(完全占据VC)。拖动另一个空 VC(将其类定义为“myPagerStrip”,将在下一步创建)。现在控制从容器视图中拖动并选择嵌入并将此 Storyboard Embed segue 的标识符定义为“showMyPagerStrip”
第 2 步:使用以下代码创建一个名为“myPagerStrip.swift”的新 Swift 文件:-
注意:对下面的代码有任何疑问,请参考上面已经提到的 github 链接,那里已经解释了一切。
import XLPagerTabStrip
class myPagerStrip: ButtonBarPagerTabStripViewController {
override func viewDidLoad() {
settings.style.buttonBarBackgroundColor = UIColor.yellowColor()
// selected bar view is created programmatically so it's important to set up the following 2 properties properly
settings.style.selectedBarBackgroundColor = UIColor.blackColor()
//settings.style.selectedBarHeight: CGFloat = 5
// each buttonBar item is a UICollectionView cell of type ButtonBarViewCell
settings.style.buttonBarItemBackgroundColor = UIColor.redColor()
settings.style.buttonBarItemFont = UIFont.systemFontOfSize(18)
// helps to determine the cell width, it represent the space before and after the title label
// settings.style.buttonBarItemLeftRightMargin: CGFloat = 8
settings.style.buttonBarItemTitleColor = UIColor.whiteColor()
// in case the barView items do not fill the screen width this property stretch the cells to fill the screen
settings.style.buttonBarItemsShouldFillAvailiableWidth = true
changeCurrentIndexProgressive = { (oldCell: ButtonBarViewCell?, newCell: ButtonBarViewCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in
guard changeCurrentIndex == true else { return }
oldCell?.label.textColor = UIColor(white: 1, alpha: 0.6)
newCell?.label.textColor = .whiteColor()
if animated {
UIView.animateWithDuration(0.1, animations: { () -> Void in
newCell?.transform = CGAffineTransformMakeScale(1.0, 1.0)
oldCell?.transform = CGAffineTransformMakeScale(0.8, 0.8)
})
}
else {
newCell?.transform = CGAffineTransformMakeScale(1.0, 1.0)
oldCell?.transform = CGAffineTransformMakeScale(0.8, 0.8)
}
}
super.viewDidLoad()
}
override func viewControllersForPagerTabStrip(pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
let child_1 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("tableViewOne") // First Table View
let child_2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("tableViewTwo") // Second Table View
let child_3 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("tableViewThree") // Third Table View
let childVC = [child_1,child_2, child_3]
return childVC
}
override func reloadPagerTabStripView() {
super.reloadPagerTabStripView()
}
}
第三步:在Storyboard上再拖3个VC,创建3个Cocoa Class文件tableViewOne.swift、tableViewTwo.swift和tableViewThree.swift,Storyboard ID分别为“tableViewOne”、“tableViewTwo”、“tableViewThree”。//(如上所述child_1、child_2 和 child_3 的代码)
注意:假设所有 3 个 tableViews 或所需的 tableViews 都设置了所需的数据。
第 4 步:在每个 tableViews 中继承“IndicatorInfoProvider”(在第 5 步之后执行),即
class tableViewOne: UIViewController,IndicatorInfoProvider
第 5 步:在每个文件中导入 XLPagerTabStrip,并在每个 tableView 中添加以下函数:-
func indicatorInfoForPagerTabStrip(pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {
return IndicatorInfo(title: "My Child title 1")
}
现在,你完成了。只需在模拟器或实际设备中运行项目。:)
如果表格视图出现问题,以下是 tableViewOne.swift 的代码供参考:-
import UIKit
import XLPagerTabStrip
class tableViewOne: UIViewController,IndicatorInfoProvider {
@IBOutlet var tableView: UITableView!
var dummyData = ["data 0","data 001","data try"]
override func viewDidLoad() {
super.viewDidLoad()
}
func indicatorInfoForPagerTabStrip(pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {
return IndicatorInfo(title: "My Child title 1")
}
}
extension tableViewOne: UITableViewDataSource, UITableViewDelegate {
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return dummyData.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("Cell")! as UITableViewCell
cell.textLabel!.text = dummyData[indexPath.row]
return cell;
}
}