在Swift中使用标识符实例化视图控制器

4

通常我会按以下步骤创建一个视图控制器并使用 Objective-C 设置其 dataSource

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Create the data model
    _pageTitles = @[@"Over 200 Tips and Tricks", @"Discover Hidden Features", @"Bookmark Favorite Tip", @"Free Regular Update"];
    _pageImages = @[@"page1.png", @"page2.png", @"page3.png", @"page4.png"];

    // Create page view controller
    self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
    self.pageViewController.dataSource = self;

    PageContentViewController *startingViewController = [self viewControllerAtIndex:0];
    NSArray *viewControllers = @[startingViewController];
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

    // Change the size of page view controller
    self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30);

    [self addChildViewController:_pageViewController];
    [self.view addSubview:_pageViewController.view];
    [self.pageViewController didMoveToParentViewController:self];

}

现在我想把它转换成Swift语言。这是我目前的尝试:
override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view, typically from a nib.

    // Create page view controller
    self.pageViewController = self.storyboard.instantiateViewControllerWithIdentifier("PageViewController") as UIPageViewController
    self.pageViewController.dataSource = self;

    var startingViewController = PageContentViewController(nibName: nil, bundle: nil)
    startingViewController = self.viewControllerAtIndex(0)
    var viewControllers: NSArray = [startingViewController];
    self.pageViewController.setViewControllers(viewControllers, direction: UIPageViewControllerNavigationDirection, animated: 0, completion: nil)

    // Change the size of page view controller
    self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30);

    self.addChildViewController(self.pageViewController)
    self.view.addSubview(self.pageViewController.view)
    self.pageViewController.didMoveToParentViewController(self)
}

我不确定为什么它会报错:

self.pageViewController.setViewControllers(viewControllers, direction: UIPageViewControllerNavigationDirection, animated: 0, completion: nil)

错误:在类型名称后面应该是成员名称或构造函数调用。

1个回答

7
direction:参数的类型是UIPageViewControllerNavigationDirection,因此参数必须是可能值中的一个,例如UIPageViewControllerNavigationDirection.Forward(可以缩写为.Forward,因为自动类型推断)。
animated:参数的类型是Bool,因此参数必须是truefalse,而不是0
综上所述:
self.pageViewController.setViewControllers(viewControllers, direction: .Forward, animated: false, completion: nil)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接