Ich sende Daten über eine Delegate-Methode an einen View-Controller. Im View-Controller, der die Daten, wenn ich print(self)
in viewDidLoad
erhält bekomme ich diesen Wert:Delegieren Erstellen einer neuen Instanz von ViewController
<PageViewControllerImage: 0x7fba16d0dc40>
und wenn ich print(self)
in der Delegatfunktion ich diesen Wert zu erhalten:
<PageViewControllerImage: 0x7fba16e0eab0>
Ich glaube, das ist, wie Ich definiere den Delegaten, es erstellt eine neue Instanz des PageViewControllerImage
, aber ich kann nicht herausfinden, wie man die vorhandene Referenz darauf bekommt?
Dies ist, was ich bin mit dem Delegierten innerhalb der Klasse zu setzen, der die Daten sendet:
self.indexDelegate = PageViewControllerImage()
------ -------- EDIT
ich versuche, Daten von meiner PageViewController Klasse zu senden:
var indexDelegate: GetMyIndexDelegate?
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
if (completed && finished) {
if let currentVC = pageViewController.viewControllers?.last {
let index = vcArr.index(of: currentVC)
if index == 3 {
// call the delegate function in delegate class
indexDelegate?.getIndex(index: index!)
}
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
// just been trying to define instance first
let storyboard: UIStoryboard = UIStoryboard (name: "Main", bundle: nil)
let PageViewControllerImageInstance: PageViewControllerImage = storyboard.instantiateViewController(withIdentifier: "vc4") as! PageViewControllerImage
print("Defined Instance \(PageViewControllerImageInstance)")
self.indexDelegate = PageViewControllerImageInstance
Und dann empfängt die Daten innerhalb der Klasse PageViewControllerImage:
protocol GetMyIndexDelegate {
func getIndex(index: Int)
}
import UIKit
class PageViewControllerImage: UIViewController, GetMyIndexDelegate {
//delegate functionto get index
func getIndex(index: Int) {
if index == 3 {
print("Inside delegate: \(self)")
}
}
@IBOutlet var signupImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
print("viewDidLoad: \(self)")
// Do any additional setup after loading the view.
}
Auch mit der Instanz der Viewcontroller definieren, bevor die Delegierten seine noch Rückkehr eine andere Instanz Nummerneinstellung:
Defined Instance <ParseStarterProject_Swift.PageViewControllerImage: 0x7fb365f06260>
viewDidLoad: <ParseStarterProject_Swift.PageViewControllerImage: 0x7fb365d0c940>
Inside delegate: <ParseStarterProject_Swift.PageViewControllerImage: 0x7fb365f06260>
Sie legen nur den Delegaten auf eine neue Instanz von 'PageViewControllerImage', aber Sie sollten auf eine vorhandene Instanz festlegen. Wo setzt du den Delegierten? Wie ist die Beziehung zwischen "PageViewControllerImage" und dem View-Controller, der als Delegat fungiert? – beyowulf
Ich setze die Referenz in viewDidLoad. PageViewControllerImage ist eine VC, die Teil des PageViewController (Index 3) – DuckMan
'viewDidLoad' von' PageViewControllerImage' ist? Vielleicht könnten Sie Ihrer Frage eine größere Vision von dem hinzufügen, was Sie erreichen möchten. Sie versuchen, Daten von wo zu wo zu übergeben? – beyowulf