ich die UIPageViewController
für eine bin mit auf Internate/tutorial-Bildschirm, und mein Problem ist, wie folgt:segue von Onboarding/tutorial Bildschirm
Wenn der Benutzer auf der letzten Seite des Tutorials ist, möchte ich eine linke Swipe-Geste, um nicht den Seiten-Controller zu wischen, sondern stattdessen einen Übergang zur Registrierungsseite durchzuführen. Ich warf eine Druckanweisung in die viewDidLoad
in der UIViewController
für die letzte Seite des Tutorials, und es registriert.
In der gleichen viewDidLoad
ich meine Gesten erstellen, um die Überleitung durchzuführen, aber nichts passiert. Ich habe sogar versucht, die performSegue
innerhalb der ViewDidLoad, aber nichts passiert. Ich habe mein Segment an die UIPageViewController
sowie meine GrowController
angeschlossen, und keiner registriert. Ich bin ratlos!
Dies ist die UIViewController
für die letzte Seite des Tutorials
class GrowController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("*********************************")
createGesture()
// performSegue(withIdentifier: "ShowRegister", sender: self)
}
func createGesture() {
let showReg = UISwipeGestureRecognizer(target: self, action: #selector(showRegister))
showReg.direction = .left
view.addGestureRecognizer(showReg)
}
func showRegister(gesture: UISwipeGestureRecognizer) {
performSegue(withIdentifier: "showRegister", sender: self)
}
}
Dies ist die UIPageViewController
ist, der die
class TutorialViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource {
var viewControllerIndex: Int?
lazy var tutorialArray: [UIViewController] = {
return [self.tutorialInstance(name: "page1"), self.tutorialInstance(name: "page2"), self.tutorialInstance(name: "page3")]
}()
private func tutorialInstance(name: String?) -> UIViewController {
return UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: name!)
}
override func viewDidLoad() {
super.viewDidLoad()
if let image = UIImage(named: "export.png") {
view.backgroundColor = UIColor.init(patternImage: image)
} else {
print("Error")
}
self.dataSource = self
self.delegate = self
if let firstViewController = tutorialArray.first {
setViewControllers([firstViewController], direction: .forward, animated: false, completion: nil)
}
}
Dies sind die delgate und Datenquelle Funktionen
// Page View Controller delegate functions
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = tutorialArray.index(of: viewController) else {
return nil
}
let previousIndex = viewControllerIndex - 1
guard previousIndex >= 0 else {
return nil
}
guard tutorialArray.count > previousIndex else {
performSegue(withIdentifier: "ShowRegister", sender: self) // Added this line just testng around, nothing happend here though.
return nil
}
return tutorialArray[previousIndex]
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = tutorialArray.index(of: viewController) else {
return nil
}
let nextIndex = viewControllerIndex + 1
guard nextIndex < tutorialArray.count else {
return nil
}
guard tutorialArray.count > nextIndex else {
return nil
}
return tutorialArray[nextIndex]
}
public func presentationCount(for pageViewController: UIPageViewController) -> Int {
return tutorialArray.count
}
public func presentationIndex(for pageViewController: UIPageViewController) -> Int {
guard let firstViewController = viewControllers?.first, let firstViewControllerIndex = tutorialArray.index(of: firstViewController) else {
return 0
}
return firstViewControllerIndex
}
Viel Code für was ist wahrscheinlich ein si mple Antwort.
tl; dr - Wie kann ich eine Streichgeste eine segue von einer bestimmten Seite der die Mühe UIPageViewController
Ahhh danke, willTransitionTo: wird es wahrscheinlich für mich tun! Aber ich möchte es wie oben erwähnt versuchen, indem ich eine Ansicht oben hinzufüge - ich habe eine Unteransicht in meinen GrowController hinzugefügt, um die gesamte Ansicht abzudecken und die Geste hinzugefügt, aber jetzt, sobald ich zum GrowController wische, stürzt die App ab . Werde bald ein Bild von Fehlern posten, wenn ich meinen Code wieder ansehe – Dan
Hier ist mein Fehler [Fehler] (https://i.imgsafe.org/44128d39bf.png). und ich hinzugefügt '@IBOutlet schwache var swipeView: UIView!' Zu meinem Code, und es stürzt beim Laden ab. – Dan
Ihr Fehler besagt, dass die Klasse nicht Schlüsselwert-konform für swipeView ist. Dies ist fast immer das Ergebnis des Löschens einer Steckdose im Code, aber nicht im Storyboard. Klicken Sie mit der rechten Maustaste auf das Controller-Symbol für die gelbe Ansicht im Storyboard und es werden alle Ausgänge angezeigt. Die Steckdose mit dem gelben Dreieck ist diejenige, die keine entsprechende Steckdose in der Blicksteuerung hat; Lösche es. –