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