Ich befolge dieses Tutorial: http://swiftiostutorials.com/ios-tutorial-using-uipageviewcontroller-create-content-slider-objective-cswift/, um eine App zu erstellen, die mehrere Schieberegler zeigt.Swift: UIPageViewController - Laden Sie separate Ansichten
Obwohl ich dieses Tutorial funktioniert, ändert dieses Beispiel nur ein Bild basierend auf denen, die in einem Array gespeichert sind.
Wie kann ich es bekommen Viewcontrollers statt Bilder
Ich habe 4 Viewcontrollers
zu laden:- ViewController1
- ViewController2
- ViewController3
- ViewController4
würde ich Dia man gerne ViewController1 und slide2 zeigen ViewController2 usw. laden ....
Hier ist mein Haupt-Viewcontroller:
import UIKit
class ViewController: UIViewController, UIPageViewControllerDataSource {
// MARK: - Variables
private var pageViewController: UIPageViewController?
// Initialize it right away here
private let contentImages = ["nature_pic_1.png",
"nature_pic_2.png",
"nature_pic_3.png",
"nature_pic_4.png"];
// MARK: - View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
createPageViewController()
setupPageControl()
}
private func createPageViewController() {
let pageController = self.storyboard!.instantiateViewControllerWithIdentifier("PageController") as UIPageViewController
pageController.dataSource = self
if contentImages.count > 0 {
let firstController = getItemController(0)!
let startingViewControllers: NSArray = [firstController]
pageController.setViewControllers(startingViewControllers, direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil)
}
pageViewController = pageController
addChildViewController(pageViewController!)
self.view.addSubview(pageViewController!.view)
pageViewController!.didMoveToParentViewController(self)
}
private func setupPageControl() {
let appearance = UIPageControl.appearance()
appearance.pageIndicatorTintColor = UIColor.grayColor()
appearance.currentPageIndicatorTintColor = UIColor.whiteColor()
appearance.backgroundColor = UIColor.darkGrayColor()
}
// MARK: - UIPageViewControllerDataSource
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
let itemController = viewController as PageItemController
if itemController.itemIndex > 0 {
return getItemController(itemController.itemIndex-1)
}
return nil
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
let itemController = viewController as PageItemController
if itemController.itemIndex+1 < contentImages.count {
return getItemController(itemController.itemIndex+1)
}
return nil
}
private func getItemController(itemIndex: Int) -> PageItemController? {
if itemIndex < contentImages.count {
let pageItemController = self.storyboard!.instantiateViewControllerWithIdentifier("ItemController") as PageItemController
pageItemController.itemIndex = itemIndex
pageItemController.imageName = contentImages[itemIndex]
return pageItemController
}
return nil
}
// MARK: - Page Indicator
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
return contentImages.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
return 0
}
und hier ist mein PageItemController:
import UIKit
class PageItemController: UIViewController {
// MARK: - Variables
var itemIndex: Int = 0
var imageName: String = "" {
didSet {
if let imageView = contentImageView {
imageView.image = UIImage(named: imageName)
}
}
}
@IBOutlet var contentImageView: UIImageView?
// MARK: - View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
contentImageView!.image = UIImage(named: imageName)
}
}
Ich bin neu in Swift/iOS Development und versuche wirklich, durch die Entwicklung darauf zu kommen. Vielen Dank im Voraus für Ihre Antworten :)
EDIT: Zur Frage klar machen
Wie kann ich es so machen, dass es eine Reihe von View-Controller ist, die auf den Schlitten nach links/rechts neben der UIPageViewController entsprechen ?
Also, wenn ich auf ViewController1 nach links wischen - der UIViewController2 geladen wird und umgekehrt für Swipe nach rechts.
UIPageViewController _does_ Last View-Controller.Sie laden View-Controller. Was ist die Frage? – matt
@matt jeder ViewController, den ich oben angegeben habe, enthält Inhalte wie Formulare/Grafiken/Bilder etc ... Wie lege ich fest, welche basierend auf dem Bildlauf angezeigt werden soll. Im Moment ist es nur ein Durchlaufen einer Reihe von Bildern. – DannieCoderBoi
Ich weiß nicht wie, weil ich nicht weiß was du machen willst. Nur eines ist wichtig: Jedes Mal, wenn "viewControllerBeforeViewController" oder "viewControllerAfterViewController" aufgerufen wird, müssen Sie entscheiden, welcher View Controller geladen werden soll. Entscheide dich also! – matt