我目前正在开设一个在线商店应用程序,可以查看任何正在销售的产品并直接从应用程序购买。
如何实现具有不可预测数量的部分的可滑动段控件,该部分仅连接到包含表视图的一个视图控制器,该视图根据所选部分更新自身? (因此,当正在更新桌面视图时,选择另一个部分时,幻灯片效果就像幻灯片一样)
有很多类别具有不同数量的附加子类别,它们作为分段控制的一部分。我真的不想用很多View控制器充斥我的故事板,同一个tableview包含相同的单元格。所以,让我们说有一个主要类别包含50+子类别,我不认为我应该使用相同的tableview制作50个View控制器。谢谢你。 :)
答案 0 :(得分:1)
由于您想重用一个View Controller,我已经覆盖了一些方法并添加了以下方法,并且没有更改代码中的任何其他内容:
numberOfPagesInSegmentedPager
didSelectViewWithIndex
segueIdentifierForPageAtIndex
因此,您只能使用一个视图控制器。
我更改了MXSegmentedPager' Example-Swift 项目的原始源代码:
<强> MXViewController.swift:强>
import UIKit
import MXSegmentedPager
class MXViewController: MXSegmentedPagerController {
override func viewDidLoad() {
super.viewDidLoad()
self.segmentedPager.backgroundColor = UIColor.whiteColor()
// Parallax Header
self.segmentedPager.parallaxHeader.view = MXHeaderView.instanceFromNib();
self.segmentedPager.parallaxHeader.mode = MXParallaxHeaderMode.Fill;
self.segmentedPager.parallaxHeader.height = 150;
self.segmentedPager.parallaxHeader.minimumHeight = 20;
// Segmented Control customization
self.segmentedPager.segmentedControl.selectionIndicatorLocation = HMSegmentedControlSelectionIndicatorLocationDown;
self.segmentedPager.segmentedControl.backgroundColor = UIColor.whiteColor()
self.segmentedPager.segmentedControl.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.blackColor()];
self.segmentedPager.segmentedControl.selectedTitleTextAttributes = [NSForegroundColorAttributeName : UIColor.orangeColor()]
self.segmentedPager.segmentedControl.selectionStyle = HMSegmentedControlSelectionStyleFullWidthStripe
self.segmentedPager.segmentedControl.selectionIndicatorColor = UIColor.orangeColor()
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) {
self.segmentedPager.reloadData()
//self.segmentedPager.pager.showPageAtIndex(1, animated: false)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//set here the total number of categories
override func numberOfPagesInSegmentedPager(segmentedPager: MXSegmentedPager) -> Int {
return 2
}
//Here you can get to know , which view user has selected.
override func segmentedPager(segmentedPager: MXSegmentedPager, didSelectViewWithIndex index: Int) {
print("didSelectViewWithIndex:\(index)")
}
override func segmentedPager(segmentedPager: MXSegmentedPager, segueIdentifierForPageAtIndex index: Int) -> String {
return "mx_page_0"
}
override func segmentedPager(segmentedPager: MXSegmentedPager, titleForSectionAtIndex index: Int) -> String {
return ["Table", "Web", "Text"][index];
}
override func segmentedPager(segmentedPager: MXSegmentedPager, didScrollWithParallaxHeader parallaxHeader: MXParallaxHeader) {
NSLog("progress %f", parallaxHeader.progress)
}
}
<强>故事板:强>
删除除标识符&#34; mx_page_0
&#34;之外的所有segues:
根据View Controller加载数据:
获取一个公共数组,并在用户幻灯片时更新它。