Swift: XLPagerTabStrip: ButtonBarPagerTabStripViewController: ChildViewController IBOutlets 未设置
Swift: XLPagerTabStrip: ButtonBarPagerTabStripViewController: ChildViewController IBOutlets are not set
Xcode -> 9.4.1,iOS -> 11.4,XLPagerTabStrip -> 8.0.1
我想在 ios 中使用 swift 创建顶部滚动标签(如 android )。
我正在使用库 XLPagerTabStrip 中的 ButtonBarPagerTabStripViewController。下面是代码:-
class ParentViewController: ButtonBarPagerTabStripViewController {
override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
return [ChildOneViewController(), ChildTwoViewController(), ChildThreeViewController()]
}
}
现在一切正常,为三个子视图控制器创建了三个滚动选项卡,左右滑动时会发生变化。但是当我在故事板中为第一个 childviewcontroller 创建一个标签并在 ChildOneViewController class 中为这个标签创建一个 IBOutlet 时。 此标签未设置,并在 viewdidload、viewdidappear 中打印 nil。代码是这样的:-
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.
}
}
如果 vcs 是在 IB 中创建的,则不要使用
ChildOneViewController()
但使用
let ch1 = self.storyboard?.instantiateViewController(withIdentifier: "childOneId") as! ChildOneViewController
给每个人一个标识符并按上面的方式加载它
Xcode -> 9.4.1,iOS -> 11.4,XLPagerTabStrip -> 8.0.1
我想在 ios 中使用 swift 创建顶部滚动标签(如 android )。
我正在使用库 XLPagerTabStrip 中的 ButtonBarPagerTabStripViewController。下面是代码:-
class ParentViewController: ButtonBarPagerTabStripViewController {
override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {
return [ChildOneViewController(), ChildTwoViewController(), ChildThreeViewController()]
}
}
现在一切正常,为三个子视图控制器创建了三个滚动选项卡,左右滑动时会发生变化。但是当我在故事板中为第一个 childviewcontroller 创建一个标签并在 ChildOneViewController class 中为这个标签创建一个 IBOutlet 时。 此标签未设置,并在 viewdidload、viewdidappear 中打印 nil。代码是这样的:-
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.
}
}
如果 vcs 是在 IB 中创建的,则不要使用
ChildOneViewController()
但使用
let ch1 = self.storyboard?.instantiateViewController(withIdentifier: "childOneId") as! ChildOneViewController
给每个人一个标识符并按上面的方式加载它