【发布时间】:2018-12-02 03:03:23
【问题描述】:
我有三个视图控制器。
第一个 VC 名称是 VC1(初始视图控制器),其中包含标签和容器视图。
第二个 VC(VC2) 是嵌入在 VC1 的容器视图中的 PageViewController。
第三个VC(VC3)是VC2的内容页。
class VC1: UIViewController, DelegateClass1{
func setText(_ index: Int) {
lblIndex.text = "\(index)"
}
...
}
protocol DelegateClass1: class {
func setText(_ index:Int)
}
class VC2: UIPageViewController,UIPageViewControllerDelegate,UIPageViewControllerDataSource, DelegateClass2 {
func setTextFromVC3(_ index: Int) {
delegateClass1?.setText(index)
}
var delegateClass1:DelegateClass1?
...
}
protocol DelegateClass2: class {
func setTextFromVC3(_ index:Int)
}
class VC3: UIViewController {
var delegateClass2: DelegatClass2?
override func viewDidAppear(_ animated: Bool) {
delegateClass2?.setTextFromVC3(pageIndex)
}
...
}
问题:
通过滚动更改VC2的当前页面后,我希望新页面的索引显示在VC1的标签内,所以我将此命令放在VC3的didAppear事件中。我在模拟器上测试了很多次,更新标签文本需要很多秒。我不使用任何异步方法。问题出在哪里?
谢谢。
编辑:
我的问题中的一个新发现:我看到当我使用Page Curl而不是Scroll作为VC2的Transition style时,不存在延迟问题,但我不想要这种transition style。
【问题讨论】:
-
你试过在
viewWillAppear(_:)做吗? -
@Rico - 我试过你的评论,当我完全滚动页面时它起作用了。但是如果我做了一个不完整的滚动,虽然 viewWillAppear 在滚动之前再次调用了页面,但是标签文本像以前一样延迟改变。我该如何解决这个问题?
标签: ios xcode uipageviewcontroller uicontainerview