旧版本代码:
init(dataSource: JXSegmentedListContainerViewDataSource)
新版本代码:
init(dataSource: JXSegmentedListContainerViewDataSource, type: JXSegmentedListContainerType = .scrollView)
因为type加了默认值,所以你如果想使用scrollView作为容器类,初始化的调用就无需修改
使用initListPercent
作为替换
使用如下初始化代码,选择UICollectionView
作为列表容器:
JXSegmentedListContainerView(dataSource: self, type: .collectionView)
删除以下代码:
segmentedView.contentScrollView = listContainerView.scrollView
更换为一下代码:
listContainerView = JXSegmentedListContainerView(dataSource: self)
segmentedView.listContainer = listContainerView
删除func didClickSelectedItem(at index: Int)
和segmentedViewScrolling(from leftIndex: Int, to rightIndex: Int, percent: CGFloat, selectedIndex: Int)
代理方法的传递调用
删除如下代码:
func segmentedView(_ segmentedView: JXSegmentedView, didClickSelectedItemAt index: Int) {
listContainerView.didClickSelectedItem(at: index)
}
func segmentedView(_ segmentedView: JXSegmentedView, scrollingFrom leftIndex: Int, to rightIndex: Int, percent: CGFloat) {
listContainerView.segmentedViewScrolling(from: leftIndex, to: rightIndex, percent: percent, selectedIndex: segmentedView.selectedIndex)
}
因为listContainer
已经在JXSegmentedView
内部进行自动调用了。不用像1.0.0之前版本那样,必须自己手动调用。
老版本代码:
segmentedView.defaultSelectedIndex = 1;
listContainerView.defaultSelectedIndex = 1;
新版本代码:
segmentedView.defaultSelectedIndex = 1;
只需要设置segmentedView
的defaultSelectedIndex
即可,内部会自动同步给listContainerView
了。
老版本代码:
segmentedView.reloadData()
listContainerView.reloadData()
新版本代码:
segmentedView.reloadData()
只需要调用segmentedView
的reloadData
即可,内部会自动同步调用listContainerView
的reloadData
reloadDataWithoutListContainer
与reloadData
相比,只是reloadDataWithoutListContainer
方法内部没有调用listContainerView.reloadData()
方法。用于只是想刷新JXSegmentedView
的UI的情况,比如刷新cell上的数字、红点等,而不需要刷新列表容器。
segmentedView
的reloadData
方法内部会同步调用JXSegmentedBaseDataSource
的reloadData(selectedIndex: Int)
方法了,所以无需自己调用了。
因为JXSegmentedListContainerView
视图内部自己创建了一个JXSegmentedListContainerViewController
视图控制器。并且该控制器检测到列表是VC类的时候,会调用addChildViewController
方法,将列表VC加入到层级里面。这样列表VC可以直接使用self.navigationController
,而无需让外部传入导航栏控制器。
当然如果你的列表是视图,也还是要保持以前传递导航栏控制器给列表视图的逻辑。
JXSegmentedView
与JXSegmentedBaseDataSource
和JXSegmentedListContainerView
的配合更加密切,无需自己调用多个API,内部会同步调用。使用更加方便,避免漏写API导致的bug。