Skip to content

Latest commit

 

History

History
103 lines (69 loc) · 3.81 KB

1.0.0版本迁移指南.md

File metadata and controls

103 lines (69 loc) · 3.81 KB

JXSegmentedListContainerView的初始化方法更改

旧版本代码:

init(dataSource: JXSegmentedListContainerViewDataSource)

新版本代码:

init(dataSource: JXSegmentedListContainerViewDataSource, type: JXSegmentedListContainerType = .scrollView)

因为type加了默认值,所以你如果想使用scrollView作为容器类,初始化的调用就无需修改

JXSegmentedListContainerView删除didAppearPercent属性

使用initListPercent作为替换

JXSegmentedListContainerView内部新增UICollectionView作为列表容器

使用如下初始化代码,选择UICollectionView作为列表容器:

JXSegmentedListContainerView(dataSource: self, type: .collectionView)

对于JXSegmentedView,使用listContainer替换contentScrollView

删除以下代码:

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之前版本那样,必须自己手动调用。

设置defaultSelectedIndex属性更改

老版本代码:

segmentedView.defaultSelectedIndex = 1;
listContainerView.defaultSelectedIndex = 1;

新版本代码:

segmentedView.defaultSelectedIndex = 1;

只需要设置segmentedViewdefaultSelectedIndex即可,内部会自动同步给listContainerView了。

调用reloadData方法更改

老版本代码:

segmentedView.reloadData()
listContainerView.reloadData()

新版本代码:

segmentedView.reloadData()

只需要调用segmentedViewreloadData即可,内部会自动同步调用listContainerViewreloadData

新增reloadDataWithoutListContainer方法

reloadDataWithoutListContainerreloadData相比,只是reloadDataWithoutListContainer方法内部没有调用listContainerView.reloadData()方法。用于只是想刷新JXSegmentedView的UI的情况,比如刷新cell上的数字、红点等,而不需要刷新列表容器。

JXSegmentedBaseDataSource无需自己调用reloadData(selectedIndex: 0)

segmentedViewreloadData方法内部会同步调用JXSegmentedBaseDataSourcereloadData(selectedIndex: Int)方法了,所以无需自己调用了。

列表是UIViewController类可以删除自定义的naviController属性

因为JXSegmentedListContainerView视图内部自己创建了一个JXSegmentedListContainerViewController视图控制器。并且该控制器检测到列表是VC类的时候,会调用addChildViewController方法,将列表VC加入到层级里面。这样列表VC可以直接使用self.navigationController,而无需让外部传入导航栏控制器。

当然如果你的列表是视图,也还是要保持以前传递导航栏控制器给列表视图的逻辑。

1.0.0版本更新总结

JXSegmentedViewJXSegmentedBaseDataSourceJXSegmentedListContainerView的配合更加密切,无需自己调用多个API,内部会同步调用。使用更加方便,避免漏写API导致的bug。