2016-05-30 11 views
0

PageViewControllerを作成し、3つのビューコントローラを追加してアプリをウォークスルーしましたが、それらを一度しか表示しないようにしたいのです。ここ現在のウォークスルーシーンは一度しか表示されません

はpageViewControllerのための私のコードです:

import UIKit 

class MyPageViewController: UIPageViewController{ 

override func viewDidLoad() { 
    super.viewDidLoad() 
    dataSource = self 
    // Do any additional setup after loading the view. 
    if let firstViewController = orderedViewControllers.first { 
     setViewControllers([firstViewController], 
          direction: .Forward, 
          animated: true, 
          completion: nil) 
    } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
//array for the ordered view controllers 
private(set) lazy var orderedViewControllers: [UIViewController] = { 
    return [self.newColoredViewController("First"), 
      self.newColoredViewController("Second"), 
      self.newColoredViewController("Third")] 
}() 

private func newColoredViewController(color: String) -> UIViewController { 
    return UIStoryboard(name: "Main", bundle: nil) . 
     instantiateViewControllerWithIdentifier("\(color)ViewController") 
} 

} 

extension MyPageViewController: UIPageViewControllerDataSource { 
//returning index of previous view controller 
func pageViewController(pageViewController: UIPageViewController, 
         viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { 
    guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else { 
     return nil 
    } 

    let previousIndex = viewControllerIndex - 1 

    guard previousIndex >= 0 else { 
     return nil 
    } 

    guard orderedViewControllers.count > previousIndex else { 
     return nil 
    } 

    return orderedViewControllers[previousIndex] 
} 
//returning index of the next view controller 
func pageViewController(pageViewController: UIPageViewController, 
         viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 
    guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else { 
     return nil 
    } 

    let nextIndex = viewControllerIndex + 1 
    let orderedViewControllersCount = orderedViewControllers.count 

    guard orderedViewControllersCount != nextIndex else { 
     return nil 
    } 

    guard orderedViewControllersCount > nextIndex else { 
     return nil 
    } 

    return orderedViewControllers[nextIndex] 
} 

} 

どのように私は一度だけ、それを表示するようにコードを編集していますか?

答えて

1

あなたが言ったことは、ユーザーが初めてアプリを開いてから再び表示されないようにしたいと思っているからです。

これを行う方法はいくつかありますが、最も簡単なのはNSUserDefaultsにプロパティを設定することでしょう。これはアプリの起動の間の設定を覚えています。次のように試してみてください:

// this should be your initial view controller 
let defaults = NSUserDefaults.standardUserDefaults() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if !defaults.boolForKey("walkthroughSeen") { 
     // create page view controller and display 
     let walkthroughVC = UIStoryboard(name: "Main", bundle: nil). 
    instantiateViewControllerWithIdentifier("MyPageViewController") 
     self.presentViewController(walkthroughVC, animated: true) 

     defaults.setBool(true, forKey: "walkthroughSeen") 
    } 
} 
+0

ありがとうございました。 :) –

関連する問題