2016-04-01 18 views
-1

in meiner Swift iOS App würde ich ein Storyboard mit zwei Ansichten erstellen. Ich möchte das Seitenansicht-Controller-Element verwenden, so dass der Benutzer mit einem Streichen nach links/rechts die tatsächliche Ansicht ändern kann. Wie kann ich das machen?Swift und Page View Controller zwischen 2 Ansichten

WICHTIG! Ich habe mehrere Male nach Tutorials im Internet gesucht. Ich habe nur ein Schema gefunden, das es erlaubt, Bilder in derselben Bildansicht zu ändern. Ich möchte das Bild in demselben Bild nicht in derselben Ansicht ändern. Ich möchte die gesamte Ansicht ändern. Ich befestige ein Bild, um es besser zu erklären.

Vielen Dank im Voraus ![Schema] 1

+0

Haben Sie sich meine Antwort angesehen? Etwas Glück? –

+0

Vielen Dank! Ich habe es getestet, es funktioniert, aber ich sehe nicht die untere Leiste mit den Punkten, die die Seiten darstellen. Wie kann ich die Punktleiste anzeigen? – Archimede

+0

Alles gelöst! Danken! – Archimede

Antwort

3

Dies erklärt, wie ein ausgelagerte View-Controller-Storyboard mit erstellen:

  1. Ziehen Sie einen UIPageViewController in Storyboard und es als Ausgangs-View-Controller markieren.
  2. Dann erstellen Sie eine neue UIPageViewController Unterklasse - nennen Sie es TutorialPageViewController und weisen Sie es dem Objekt zu, das Sie gerade in das Storyboard gezogen haben.
  3. Ziehen Sie nun zwei neue UIViewControllers in das Storyboard und erstellen/weisen Sie für jede eine Unterklasse zu, wie Sie es normalerweise tun würden.
  4. Geben Sie jedem dieser zwei View-Controller einen Storyboard ID, z. B. RedViewController & GreenViewController.
  5. nun diesen Code in Ihrem TutorialPageViewController hinzufügen, die und zeigt den richtigen View-Controller erstellt, wenn Sie Swipe:

TutorialPageViewController:

class TutorialPageViewController: UIPageViewController, UIPageViewControllerDataSource { 
private(set) lazy var orderedViewControllers: [UIViewController] = { 
    return [self.newColoredViewController("RedViewController"), 
    self.newColoredViewController("GreenViewController")] 
}() 

private func newColoredViewController(color: String) -> UIViewController { 

return UIStoryboard(name: "Main", bundle: nil) . 
    instantiateViewControllerWithIdentifier("\(color)ViewController") 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    dataSource = self 

    if let firstViewController = orderedViewControllers.first { 
     setViewControllers([firstViewController], 
     direction: .Forward, 
     animated: true, 
     completion: nil) 
    } 
} 

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] 
} 

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] 
} 
} 

Siehe den Artikel für weitere Informationen und eine Anleitung zu diesem Thema.

https://spin.atomicobject.com/2015/12/23/swift-uipageviewcontroller-tutorial/

Update: Seite Dots

Lesen von Punkt 7 auf diesem Teil 2 Artikel, der zeigt, wie ein UIPageControl hinzuzufügen und die Punkte auf Swipe ändern:

https://spin.atomicobject.com/2016/02/11/move-uipageviewcontroller-dots/

@IBOutlet weak var pageControl: UIPageControl! 

func tutorialPageViewController(tutorialPageViewController: TutorialPageViewController, 
    didUpdatePageCount count: Int) { 
    pageControl.numberOfPages = count 
} 

func tutorialPageViewController(tutorialPageViewController: TutorialPageViewController, 
    didUpdatePageIndex index: Int) { 
    pageControl.currentPage = index 
} 
Verwandte Themen