gpt4 book ai didi

ios - 从 UITabBarController 中的另一个选项卡在 UIPageViewController 中以编程方式翻页

转载 作者:行者123 更新时间:2023-11-30 12:04:52 24 4
gpt4 key购买 nike

我有一个 UITabBarController 作为 Root View Controller 。

在此 UITabBarController 中,我有 2 个选项卡:tabA 和 tabB。

tabA是一个通用的 View Controller ,tabB是一个带有Container View的viewController,其中嵌入了pageViewcontroller C。

现在tabA中有一个按钮,我想实现这样的效果,当点击这个按钮时,会跳转到tabB并显示C中的第二页,每次点击该按钮都会调用函数:

func swipeToIndex(ToIndex: Int, completion: (()->Void)? = nil) {
if self.currentPageIndex > 2 {
return
}
if ToIndex < self.currentPageIndex {
let toViewController = self.orderedViewControllers[ToIndex]
self.setViewControllers([toViewController], direction: .reverse, animated: true, completion: {finish in
self.currentPageIndex = ToIndex
completion?()
})
}
else if ToIndex > self.currentPageIndex {
let toViewController = self.orderedViewControllers[ToIndex]
self.setViewControllers([toViewController], direction: .forward, animated: true, completion: {finish in
self.currentPageIndex = ToIndex
completion?()
})
}
}

我只有在第二次点击按钮时才意识到这一点。第一次,它进入C语言的第一页。我发现它与viewDidLoad()有关。当它在

之后第一次调用函数 swipeToIndex 时

self.setViewControllers([toViewController], direction: .forward, animated: true, completion: {finish in self.currentPageIndex = ToIndex completion?() }) it will call viewDidLoad, inside there sets the viewcontroller again like following:

if let firstViewController = orderedViewControllers.first {
setViewControllers([firstViewController],
direction: .forward,
animated: true,
completion: nil)
}

第一次调用swipeToIndex时,我不知道如何避免这种情况

最佳答案

您需要更智能地转发消息并检查 View 是否已加载。

在页面 Controller 中,您应该检查 View 是否已加载:

func swipeToIndex(ToIndex: Int, completion: (()->Void)? = nil) {
guard isViewLoaded else {
self.pageToSwipeTo = ToIndex
return
}

所以你需要添加

var pageToSwipeTo: Int? = nil

然后在viewDidLoad最后尝试

if let pageToSwipeTo = pageToSwipeTo {
self.pageToSwipeTo = nil
self. swipeToIndex(pageToSwipeTo)
}

这是假设页面 View Controller 已经存在于您的情况中。由于您的层次结构,这实际上可能不正确,因此您甚至可能需要通过选项卡栏 View Controller 转发消息...但请先尝试此过程。

关于ios - 从 UITabBarController 中的另一个选项卡在 UIPageViewController 中以编程方式翻页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46789346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com