ios - Swift: XLPagerTabStrip: ButtonBarPagerTabStripViewController: ChildViewController IBOutlets 未设置
问题描述
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()]
}
}
现在一切正常,为三个 childviewcontrollers 创建了三个滚动选项卡,在左右滑动时改变。但是当我在情节提要中为第一个 childviewcontroller 创建一个标签并在 ChildOneViewController 类中为此标签创建一个 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
给每个一个标识符并像上面一样加载它
推荐阅读
- bash - 在 MacOs bash 5 上安装 git subrepo 时出现问题
- javascript - 如何通过类名获取位于父元素中的元素的值
- javascript - 当其他窗口以 7/8 角度弹出时,防止背景窗口向上滚动到顶部
- mongodb - 通过 Azure Data Lake 和 Power BI 进行数据分析(加入 mongoDB 和 SQL 数据)
- swift - Swift 中的类与结构(复制)
- swift - 如何编写实现访问类型属性的通用函数
- python - 在 Amazon EMR 中安装 autogluon
- r - 如何在 R 中获取小簇(几个像素)的大小
- javascript - 使用 Java 和 HTML 的表单中的阶乘。我的代码有什么问题?
- r - 使用学习者创建一个开放式问题:r 中的教程