[英]Instantiating a view controller with identifier in Swift
通常我會完成以下操作來創建視圖控制器並使用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)
錯誤:類型名稱后的預期成員名稱或構造函數調用。
的類型的direction:
參數是UIPageViewControllerNavigationDirection
,因此參數必須是可能的值之一,例如UIPageViewControllerNavigationDirection.Forward
(其可縮短至.Forward
由於自動類型推斷)。
而animated:
參數的類型是Bool
,因此參數必須為true
或false
,而不是0
。
一起:
self.pageViewController.setViewControllers(viewControllers, direction: .Forward, animated: false, completion: nil)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.