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:标题标签未显示在寻呼机选项卡上

XLPagerTabStrip 黑色空间

XLPagerTabStrip - 选定的选项卡选择不起作用

XLPagerTabStrip - 如何在选择更改时更改所选栏的颜色

如何在 XLPagerTabStrip swift 中检测滑动或选择事件