gpt4 book ai didi

ios - UIPageControl 似乎并不总是在滚动时发生变化

转载 作者:行者123 更新时间:2023-11-30 13:41:21 27 4
gpt4 key购买 nike

我有一个 UIPageViewController,其中放置了一个 UIPageControl。当我滚动时,这似乎在大多数情况下都有效,但有时它不会更改当前选定的页面。什么会触发这种行为?

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {

let vc = viewController as! WalkthroughViewController

var index = vc.pageIndex as Int

self.pageControl.currentPage = index

if (index == 0 || index == NSNotFound)

{

return nil



}



index--

return self.viewControllerAtIndex(index)
}

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {

let vc = viewController as! WalkthroughViewController

var index = vc.pageIndex as Int

self.pageControl.currentPage = index


if (index == NSNotFound)

{

return nil

}



index++



if (index == self.pageTitles.count)

{

return nil

}



return self.viewControllerAtIndex(index)
}

func viewControllerAtIndex(index: NSInteger) -> UIViewController? {

if ((self.pageTitles.count == 0) || (index >= self.pageTitles.count)) {

return WalkthroughViewController()

}


let pageContentViewController = storyboard!.instantiateViewControllerWithIdentifier("WalkthroughViewController") as! WalkthroughViewController
pageContentViewController.titleText = pageTitles[index] as String
pageContentViewController.subText = pageSubTitles[index] as String
pageContentViewController.imageText = pageImages[index] as String
pageContentViewController.pageIndex = index

return pageContentViewController
}

最佳答案

了解 UIPageViewControl 的要点可能是使用 int 跟踪您所在的页面不起作用。永远不会工作。试图让它发挥作用会让你发疯。

给定一个 View Controller ,您每次都必须通过将其与您拥有的索引进行比较来获取索引。

如果您阅读 Apple 示例代码,您就会看到这一点。这确实令人困惑,而且从各方面来看,这是 Cocoa 中较弱的组件之一。

解决方案:假设您有一个页面控件,并且您有 5 个不同的 Controller 可供分页。当框架请求之前或之后的 Controller 时,它会向您传递当前的 Controller 。您应该接受它并循环遍历您必须找到集合中当前索引的索引,然后简单地添加或减去一(之后/之前)并返回该索引处的 Controller 。就这么简单。

这样做的部分原因是您可能不希望每个页面都有不同的 Controller 。例如,您可能有相同的 Controller ,只是将不同的东西插入其中。在这种情况下,您可以继续更改单个组件中的子组件,然后在更改其内容后返回同一组件。

关于ios - UIPageControl 似乎并不总是在滚动时发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35535959/

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