XLPagerTabStrip选择首先显示的视图控制器

时间:2017-05-04 00:52:35

标签: ios swift xlpagertabstrip

我正在使用XLPagerTabStrip来切换一组视图控制器。我有三个视图控制器,我希望中间视图控制器默认显示为第一个。

我可以用

let parentViewController = self.parent! as! ParentViewController
parentViewController.moveToViewControllerAtIndex(1)

在我的第一个视图控制器中,但第一个视图控制器从服务器加载一些数据,如果我在加载数据时切换到另一个视图控制器,那么第一个视图控制器将冻结,它将不会加载数据。

默认情况下,有没有办法将中间视图控制器显示为第一个?

6 个答案:

答案 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()
        
    }