gpt4 book ai didi

ios - 类型 'PageViewController' 不符合协议(protocol) 'UIPageViewControllerDataSource'

转载 作者:行者123 更新时间:2023-11-28 14:34:37 24 4
gpt4 key购买 nike

我一直在尝试在 Storyboard中使用 UIPageViewController 来创建一组滑动图像,但我一直收到此错误:

Type 'PageViewController' does not conform to protocol 'UIPageViewControllerDataSource'

我不明白为什么。

class PageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource {

//for scroll view
lazy var subViewControllers:[UIViewController] = {
return[
UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Slide_1") as! ViewController_0,
UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Slide_2") as! ViewController_1,
UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Slide_3") as! ViewController_2
]
}()

//after viewcontroller
func pageViewController(_pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let currentIndex:Int = subViewControllers.index(of: viewController) ?? 0
if (currentIndex >= subViewControllers.count - 1) {
return nil
}
return subViewControllers[currentIndex + 1]
}

//before viewcontroller
func pageViewController(_pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let currentIndex:Int = subViewControllers.index(of: viewController) ?? 0
if (currentIndex <= 0) {
return nil
}
return subViewControllers[currentIndex - 1]
}
override func viewDidLoad() {
super.viewDidLoad()
//setting the initial view for the slider
setViewControllers([subViewControllers[0]],direction: .forward, animated: true, completion: nil)
}
//making style a normal slide
required init?(coder: NSCoder) {
super.init(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

// MARK: - Navigation
func presentationCount(for pageViewController: UIPageViewController) -> Int {
return subViewControllers.count
}
}

最佳答案

在作为协议(protocol)一部分的两个方法中,_pageViewController 参数之间应该有一个空格(前/后页面)。

下划线表示该方法在调用时不需要该参数的标签。

例如:

func setBlob(_ blob: Blob) -> Bool {
}

调用时看起来像这样:

let myBlob = Blob()
setBlob(myBlob)

如果那里没有 _,它会期望 setBlob(blob: blob)。为了代码整洁起见,能够更改或忽略参数名称很方便。但是由于参数标签和实际参数名称之间没有空格,它认为参数名称是 _pageViewController

在错误显示的同一行上应该有一个红色图标,您可以单击该图标自动填充缺失的方法,这样您就可以轻松查看缺失/不正确的内容。您的类必须实现协议(protocol)的所有必需方法并遵循相同的方法签名,否则您将收到此错误。

关于ios - 类型 'PageViewController' 不符合协议(protocol) 'UIPageViewControllerDataSource',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50989412/

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