我正在使用XLPagerTabStrip来切换一组视图控制器。我有三个视图控制器,我希望中间视图控制器默认显示为第一个。
我可以用
let parentViewController = self.parent! as! ParentViewController
parentViewController.moveToViewControllerAtIndex(1)
在我的第一个视图控制器中,但第一个视图控制器从服务器加载一些数据,如果我在加载数据时切换到另一个视图控制器,那么第一个视图控制器将冻结,它将不会加载数据。
默认情况下,有没有办法将中间视图控制器显示为第一个?
答案 0 :(得分:3)
跳转到'currentIndex'的定位并将其从私有变为公开。然后您可以通过以下代码选择当前的控制器:
currentIndex = 1
答案 1 :(得分:3)
在功能中:
override func viewControllers(for pagerTabStripController:
PagerTabStripViewController) -> [UIViewController] {
// This line will help you achieve the requirement
pagerTabStripController.currentIndex = /* required index */
}
将PagerTabStripViewController中的currentIndex设为public后,它将顺利运行。
答案 2 :(得分:1)
要阻止加载第一个标签,必须在moveToViewControllerAtIndex()
子类中调用viewDidLoad()
之前调用PagerTabStripViewController
。
答案 3 :(得分:0)
override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
pagerTabStripController.moveToViewController(at: 0) // required index
}
答案 4 :(得分:0)
对于Swift 5中的“移动特定”标签XLPagerTabStrip
override func viewDidAppear(_ animated: Bool) {
if nowFrom == "sendvc"
{
self.moveToViewController(at: 3,animated: false)
}
}
答案 5 :(得分:0)
您必须使用以下行:
override func viewDidAppear(_ animated: Bool) {
self.moveToViewController(at: 2)
reloadPagerTabStripView()
}