For managing list views (like UIViewController or UIView) alongside the segmented view, JXSegmentedListContainerView is the highly recommended wrapper. It provides lazy loading for better performance and centralized code management.
To integrate it, you must associate the contentScrollView of the JXSegmentedView with the scrollView of the JXSegmentedListContainerView, and manually pass click and scroll events from the JXSegmentedViewDelegate to the container.
// 1. Initialize Container
self.listContainerView = JXSegmentedListContainerView(dataSource: self)
self.view.addSubview(self.listContainerView)
// Associate the contentScrollView
self.segmentedView.contentScrollView = self.listContainerView.scrollView
// 2. Implement JXSegmentedListContainerViewDataSource
func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
return self.segmentedDataSource.titles.count
}
func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
return ListBaseViewController()
}
// 3. Implement JXSegmentedListContainerViewListDelegate (in your ViewController/View)
func listView() -> UIView {
return view // or viewController.view
}
// 4. Pass events from JXSegmentedViewDelegate to listContainerView (CRITICAL)
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)
}