在Swift中使用UIPageViewController;作为「;沮丧的

在Swift中使用UIPageViewController;作为「;沮丧的,swift,uipageviewcontroller,Swift,Uipageviewcontroller,我使用的是PageViewController,然后我声明了PageViewController的数据源,当实现所需的方法时,我在使用as downcast时收到一个错误,它说“correctViewController不是一个类型。” 我尝试了许多不同的方法,但我只是无法消除as旁边的错误。有什么想法吗?这不是一种类型或一门课。您正试图向下转换为一个变量 在as之后,只需编写控制器的类就缺少了viewControllerAfterViewController,正如编译器正确声明的那样corr

我使用的是PageViewController,然后我声明了PageViewController的数据源,当实现所需的方法时,我在使用as downcast时收到一个错误,它说“correctViewController不是一个类型。”


我尝试了许多不同的方法,但我只是无法消除as旁边的错误。有什么想法吗?

这不是一种类型或一门课。您正试图向下转换为一个变量


as
之后,只需编写控制器的类

就缺少了
viewControllerAfterViewController
,正如编译器正确声明的那样
correctViewController
不是一个类型,而是一个变量。哦,好的,因此,我将只写控制器的类。还考虑提到不一致W.R.T.协议UIPageViewControllerDataSource的问题,或者海报代码仍将显示编译时错误。@dfri我如何才能使用as语句更正代码,因为当我使用
InstanceViewController
方法时,我必须先使用as,然后使用viewController类型。因为我有多个视图控制器,所以不能只对一个视图控制器的名称进行修改。如果不写viewController的名字,我还能做什么呢?@Harish正如Alessandro所写,你不能向下转换为变量;你堕落到一种类型。我假设不可变字符串属性
page
控制您尝试访问的多个ViewController中的哪一个。好的,我将尝试实现它。
import UIKit

class HarishPageViewController: UIPageViewController, UIPageViewControllerDataSource {

override func viewDidLoad() {
    super.viewDidLoad()
    self.dataSource = self
    // Do any additional setup after loading the view.
}

let pageTitles = ["HarishIntroduction", "HarishPlaces", "WyomingSeminary", "AppleTree", "KearneyHighSchool", "MosconeCenter"]
let viewControllerArray: NSArray = [HarishIntroduction(), HarishPlaces(), WyomingSeminary(), AppleTree(), KearneyHighSchool(), MosconeCenter()]
var index = 0

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
    if index == 0 {
        return nil
    }
    else {
        index--
        let page = pageTitles[index]
        let correctViewController: UIViewController = viewControllerArray[index] as! UIViewController
        let vc = harishStoryboard.instantiateViewControllerWithIdentifier(page) as correctViewController

    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}