Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS框架XLPagerTabStrip工作不正常_Ios_Swift_Xlpagertabstrip - Fatal编程技术网

iOS框架XLPagerTabStrip工作不正常

iOS框架XLPagerTabStrip工作不正常,ios,swift,xlpagertabstrip,Ios,Swift,Xlpagertabstrip,我正在使用XLPagerTabStrip获取TabBar,使用ViewPager类型行为,比如Android。我已经按照他们的github repo文档指南进行了配置,但就我而言,它在我的模拟器iPhone11 Pro max和真实设备iPhone6+上有一种特殊的行为。选择最后一个选项卡时,选项卡栏会滚动一点,但不需要滚动。在iPhone6中,它显示的是单个标签的全屏显示。我附上代码和截图。任何形式的帮助都是值得赞赏的。提前谢谢 这是我的代码 class TalkRoomPagerViewCo

我正在使用
XLPagerTabStrip
获取
TabBar
,使用
ViewPager
类型行为,比如Android。我已经按照他们的github repo文档指南进行了配置,但就我而言,它在我的模拟器iPhone11 Pro max和真实设备iPhone6+上有一种特殊的行为。选择最后一个选项卡时,选项卡栏会滚动一点,但不需要滚动。在iPhone6中,它显示的是单个标签的全屏显示。我附上代码和截图。任何形式的帮助都是值得赞赏的。提前谢谢 这是我的代码

class TalkRoomPagerViewController: BaseButtonBarPagerTabStripViewController<PagerTabCell>, StoryboardBased, ViewModelBased {

    var viewModel: TalkRoomPagerViewModel!
    private let bag = DisposeBag()

    private var allTalkRoom: TalkRoomListViewController {
        let viewModel = TalkRoomListViewModel(type: .all,
                                              filteredTalkroomWithPreferenceLists: self.viewModel.allTalkRoomWithPreferenceLists,
                                              requestPreferenceUpdate: self.viewModel.requestPreferenceUpdate,
                                              pagerTabIndex: self.viewModel.pagerTabIndexSubject.asObserver())
        let services = TalkroomListServices(chatRoomNetwork: ChatRoomNetwork())
        let viewController = TalkRoomListViewController.instantiate(withViewModel: viewModel, andServices: services)
        return viewController
    }
    private var siteTalkRoom: TalkRoomListViewController {
        let viewModel = TalkRoomListViewModel(type: .site,
                                              filteredTalkroomWithPreferenceLists: self.viewModel.siteTalkRoomWithPreferenceLists,
                                              requestPreferenceUpdate: self.viewModel.requestPreferenceUpdate)
        let services = TalkroomListServices(chatRoomNetwork: ChatRoomNetwork())
        let viewController = TalkRoomListViewController.instantiate(withViewModel: viewModel, andServices: services)
        return viewController
    }
    private var companyTalkRoom: TalkRoomListViewController {
        let viewModel = TalkRoomListViewModel(type: .company,
                                              filteredTalkroomWithPreferenceLists: self.viewModel.companyTalkRoomWithPreferenceLists,
                                              requestPreferenceUpdate: self.viewModel.requestPreferenceUpdate)
        let services = TalkroomListServices(chatRoomNetwork: ChatRoomNetwork())
        let viewController = TalkRoomListViewController.instantiate(withViewModel: viewModel, andServices: services)
        return viewController
    }
    private var groupTalkRoom: TalkRoomListViewController {
        let viewModel = TalkRoomListViewModel(type: .group,
                                              filteredTalkroomWithPreferenceLists: self.viewModel.groupTalkRoomWithPreferenceLists,
                                              requestPreferenceUpdate: self.viewModel.requestPreferenceUpdate)
        let services = TalkroomListServices(chatRoomNetwork: ChatRoomNetwork())
        let viewController = TalkRoomListViewController.instantiate(withViewModel: viewModel, andServices: services)
        return viewController
    }

    public var steppers: [Stepper] {
        return [viewModel, allTalkRoom.viewModel, siteTalkRoom.viewModel, companyTalkRoom.viewModel, groupTalkRoom.viewModel]
    }

    override func viewDidLoad() {
        self.prepareUI()
        self.configureNavigationBar()
        super.viewDidLoad()
        bindViewModel()

    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        viewModel.requestTalkRoomList.onNext(())
        viewModel.requestPreferenceList.onNext(())
        viewModel.locationFilter.accept(PersistenceManager.shared.savedFilterLocation)
    }

    func bindViewModel() {
        viewModel.pagerTabIndexSubject.subscribe(onNext: { (index) in
            self.moveToViewController(at: index, animated: true)
        })
            .disposed(by: bag)

        viewModel.preferenceUpdateResponse.subscribe(onNext: { [weak self] _ in
            self?.viewModel.requestTalkRoomList.onNext(())
            self?.viewModel.requestPreferenceList.onNext(())
        })
            .disposed(by: bag)
    }

    private func prepareUI() {
        self.title = "トークルーム一覧"
        buttonBarView.isScrollEnabled = false
        buttonBarItemSpec = ButtonBarItemSpec.nibFile(nibName: "PagerTabCell", bundle: Bundle(for: PagerTabCell.self)) { _ in
            return self.view.frame.width/4
        }
        settings.style.buttonBarBackgroundColor = .white
        settings.style.buttonBarItemBackgroundColor = .white
        settings.style.selectedBarBackgroundColor = Asset.duskBlue.color
        settings.style.selectedBarHeight = 2.0
        settings.style.buttonBarMinimumLineSpacing = 0
        settings.style.buttonBarItemTitleColor = .black
        settings.style.buttonBarLeftContentInset = 0
        settings.style.buttonBarRightContentInset = 0

        changeCurrentIndexProgressive = { (oldCell: PagerTabCell?, newCell: PagerTabCell?, progressPercentage: CGFloat, changeCurrentIndex: Bool, animated: Bool) -> Void in
            guard changeCurrentIndex == true else { return }
            oldCell?.titleLabel.textColor = .black
            newCell?.titleLabel.textColor = Asset.duskBlue.color
        }
    }

    private func configureNavigationBar() {
        self.addBarItem(position: .left, title: "編集", target: self, action: #selector(editButtonTapped))
        self.addBarItem(position: .right, image: Asset.iconPlus.image, target: self, action: #selector(addButtonTapped))
    }

    @objc private func editButtonTapped() {

    }

    @objc private func addButtonTapped() {
        self.viewModel.navigateToCreateTalkRoom()
    }

    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
        return [allTalkRoom, siteTalkRoom, companyTalkRoom, groupTalkRoom ]
    }

    override func configure(cell: PagerTabCell, for indicatorInfo: IndicatorInfo) {
        cell.iconImageView.image = indicatorInfo.image?.withRenderingMode(.alwaysOriginal)
        cell.titleLabel.text = indicatorInfo.title

    }

}
class TalkRoomPagerViewController:BaseButtonBarPagerTabStripViewController,基于故事板,基于视图模型{
var viewModel:TalkRoomPagerViewModel!
私人出租包=处置包()
专用var allTalkRoom:TalkRoomListViewController{
让viewModel=TalkRoomListViewModel(类型:.all,
FilteredTalkRoomwithPreferenceList:self.viewModel.AllTalkRoomwithPreferenceList,
requestPreferenceUpdate:self.viewModel.requestPreferenceUpdate,
pagerTabIndex:self.viewModel.pagerTabIndexSubject.asObserver())
let services=TalkroomListServices(聊天室网络:聊天室网络())
让viewController=TalkRoomListViewController.Instance(使用viewModel:viewModel和services:services)
返回视图控制器
}
专用var siteTalkRoom:TalkRoomListViewController{
让viewModel=TalkRoomListViewModel(类型:。站点,
FilteredTalkRoomwithPreferenceList:self.viewModel.SiteTalkRoomwithPreferenceList,
requestPreferenceUpdate:self.viewModel.requestPreferenceUpdate)
let services=TalkroomListServices(聊天室网络:聊天室网络())
让viewController=TalkRoomListViewController.Instance(使用viewModel:viewModel和services:services)
返回视图控制器
}
私人var companyTalkRoom:TalkRoomListViewController{
让viewModel=TalkRoomListViewModel(类型:。公司,
FilteredTalkRoomwithPreferenceList:self.viewModel.CompanyTalkRoomwithPreferenceList,
requestPreferenceUpdate:self.viewModel.requestPreferenceUpdate)
let services=TalkroomListServices(聊天室网络:聊天室网络())
让viewController=TalkRoomListViewController.Instance(使用viewModel:viewModel和services:services)
返回视图控制器
}
private var groupTalkRoom:TalkRoomListViewController{
让viewModel=TalkRoomListViewModel(类型:。组,
FilteredTalkRoomwithPreferenceList:self.viewModel.GroupTalkRoomwithPreferenceList,
requestPreferenceUpdate:self.viewModel.requestPreferenceUpdate)
let services=TalkroomListServices(聊天室网络:聊天室网络())
让viewController=TalkRoomListViewController.Instance(使用viewModel:viewModel和services:services)
返回视图控制器
}
公共变量步进器:[步进器]{
返回[viewModel,allTalkRoom.viewModel,siteTalkRoom.viewModel,companyTalkRoom.viewModel,groupTalkRoom.viewModel]
}
重写func viewDidLoad(){
self.prepareUI()
self.configureNavigationBar()
super.viewDidLoad()
bindViewModel()
}
覆盖函数视图将出现(uo动画:Bool){
超级。视图将显示(动画)
viewModel.requestTalkRoomList.onNext(())
viewModel.requestPreferenceList.onNext(())
viewModel.locationFilter.accept(PersistenceManager.shared.savedFilterLocation)
}
func bindViewModel(){
viewModel.pagerTabIndexSubject.subscribe(onNext:{(索引)在
self.moveToViewController(at:index,动画:true)
})
.处置(由:袋)
viewModel.preferenceUpdateResponse.subscribe(onNext:{[weak self]\uIn
self?.viewModel.requestTalkRoomList.onNext(())
self?.viewModel.requestPreferenceList.onNext(())
})
.处置(由:袋)
}
私人职能制备(){
self.title=”トークルーム一覧"
buttonBarView.IsScrolEnabled=false
buttonBarItemSpec=buttonBarItemSpec.nibFile(nibName:“PagerTabCell”,bundle:bundle(for:PagerTabCell.self)){in
返回self.view.frame.width/4
}
settings.style.buttonBarBackgroundColor=.white
settings.style.buttonBarItemBackgroundColor=.white
settings.style.selectedBarBackgroundColor=Asset.blue.color
settings.style.selectedBarHeight=2.0
settings.style.ButtonBaminimumLineSpacing=0
settings.style.buttonBarItemTitleColor=.black
settings.style.buttonBarleftContentSet=0
settings.style.buttonBarRightContentInset=0
changeCurrentIndexProgressive={(oldCell:PagerTabCell?,newCell:PagerTabCell?,progressPercentage:CGFloat,changeCurrentIndex:Bool,动画:Bool)->在
guard changeCurrentIndex==true,否则{return}
oldCell?.titleLabel.textColor=.black
newCell?.titleLabel.textColor=Asset.blue.color
}
}
专用函数配置导航栏(){
self.addBarItem(位置:。左侧,标题:”編集,目标:自我,操作:#选择器(editButtonTapped))
self.addBarItem(位置:。右侧,图像:Asset.iconPlus.image,目标:self,操作:#选择器(addButtonTapped))
}
@objc专用函数editButtonTapped(){
}
@objc专用函数addButtonTapped(){
self.viewModel.navigateToCreateTalkRoom()文件
}
覆盖func viewControllers(用于pagerTabStripController:Pa