XLPagerTabStrip 选择首先显示的视图控制器
Posted
技术标签:
【中文标题】XLPagerTabStrip 选择首先显示的视图控制器【英文标题】:XLPagerTabStrip select what view controller will be shown first 【发布时间】:2017-05-04 00:52:35 【问题描述】:我正在使用XLPagerTabStrip 在一组视图控制器之间切换。我有三个视图控制器,我希望中间视图控制器默认显示为第一个。
我可以使用
let parentViewController = self.parent! as! ParentViewController
parentViewController.moveToViewControllerAtIndex(1)
在我的第一个视图控制器中,但第一个视图控制器从服务器加载一些数据,如果我在加载数据时切换到另一个视图控制器,第一个视图控制器将冻结并且不会加载数据。
有没有办法默认显示中间视图控制器?
【问题讨论】:
这是 XLPagerTabStrip 中的问题,您可以使用pod 'XLPagerTabStrip' , :git => 'https://github.com/Dagogatc/XLPagerTabStrip.git', :branch => 'moveToViewController-issue'
【参考方案1】:
跳转到'currentIndex'的定义并将其从私有更改为公共。然后你可以通过这个代码选择你当前的控制器:
currentIndex = 1
【讨论】:
【参考方案2】:在函数中:
override func viewControllers(for pagerTabStripController:
PagerTabStripViewController) -> [UIViewController]
// This line will help you achieve the requirement
pagerTabStripController.currentIndex = /* required index */
将 PagerTabStripViewController 中的 currentIndex 设为 public 后,它将顺利运行。
【讨论】:
【参考方案3】:为防止加载第一个选项卡,moveToViewControllerAtIndex()
必须在您的 PagerTabStripViewController
子类中调用 viewDidLoad()
之前调用。
【讨论】:
【参考方案4】:override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController]
pagerTabStripController.moveToViewController(at: 0) // required index
【讨论】:
【参考方案5】:用于在 swift 5 中移动特定选项卡 XLPagerTabStrip
override func viewDidAppear(_ animated: Bool)
if nowFrom == "sendvc"
self.moveToViewController(at: 3,animated: false)
【讨论】:
【参考方案6】:你必须使用以下几行:
override func viewDidAppear(_ animated: Bool)
self.moveToViewController(at: 2)
reloadPagerTabStripView()
【讨论】:
以上是关于XLPagerTabStrip 选择首先显示的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
XLPagerTabStrip:标题标签未显示在寻呼机选项卡上
XLPagerTabStrip - 选定的选项卡选择不起作用