雨燕:XLPagerTabStrip:ButtonBarPagerTabStripViewController:ChildViewController IBOutlets未设置

时间:2018-08-09 11:11:01

标签: ios swift xlpagertabstrip

Xcode-> 9.4.1,iOS-> 11.4,XLPagerTabStrip-> 8.0.1

我想使用swift在ios中创建顶部滚动标签(例如android中的)。

我正在使用库 XLPagerTabStrip 中的 ButtonBarPagerTabStripViewController 。下面是代码:-

class ParentViewController: ButtonBarPagerTabStripViewController {

    override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {

        return [ChildOneViewController(), ChildTwoViewController(), ChildThreeViewController()]

    }

}

现在一切正常,为三个childviewcontroller创建了三个滚动选项卡,左右滑动即可更改。但是,当我在情节提要中为第一个childviewcontroller创建标签并在ChildOneViewController类中为此标签创建IBOutlet时。 此标签未设置,并且在viewdidload中显示为零,并且出现viewdid 。代码是这样的:-

class ChildOneViewController: UIViewController, IndicatorInfoProvider {

    @IBOutlet weak var label: UILabel!   // This label i have set from storyboard.

    func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo {

        return IndicatorInfo(title: "CHILD ONE")

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        print(self.label) // This is printing nil to console.

   }

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

       print(self.label) // This is also printing nil to console.

   }

}

1 个答案:

答案 0 :(得分:1)

如果vc是在IB中创建的,则不要使用

ChildOneViewController()

但是使用

let ch1 = self.storyboard?.instantiateViewController(withIdentifier: "childOneId") as! ChildOneViewController

给每个人一个标识符并按上面的方式加载它