UIViewController Objekt (self) soll sich selbst klonen, damit beide Objekte unabhängig von einander modifiziert werden können

  • UIViewController Objekt (self) soll sich selbst klonen, damit beide Objekte unabhängig von einander modifiziert werden können

    Hallo Forum :)

    Ich habe wieder einmal ein etwas verwirrendes Problem.


    Gerne möchte ich wissen ob und wie ich ein UIViewController klonen kann.

    self (1 (mein) Objekt) -> 2 Klone, quasi zwei Instanzen (2 Objekte)


    Ich benötige das, um die zwei Klone unabhängig voneinander modifizieren zu können.


    Als Beispiel:

    Ich kann den Content des ViewController in zwei UIImages überführen. Somit hätte ich dann zwei Momentaufnahmen des Content.

    Nur möchte ich eben keine UIImages haben, sondern zwei neue ViewController, ab diesem Momentum.


    Selbstverständlich soll der komplette innere Zustand des Objektes auf die zwei Klone übertragen werden.



    Meine gescheiterten Versuche:

    PHP-Quellcode

    1. UIViewController = [self copy];
    2. UIViewController *viewController1 = [[UIViewController alloc] init];
    3. [viewController1.view addSubview:self.view];



    Wie lässt sich so etwas realisieren?

    Vielen Dank im Voraus!


    ;( :D
  • MCDan schrieb:

    Du solltest vielleicht nicht den ViewController, sondern das Model bzw. die Daten in Deinem Model duplieren und dann die Kopie an einen neuen ViewController übergeben, damit dieser die Daten anzeigen kann.

    Recht herzlichen Dank für Ihre Antwort.

    Bei dem ViewController handelt es sich um den RootViewController.

    Ich bin mir nun nicht ganz sicher wie ein Lösungsansatz zu Ihrem Vorschlag aussehen könnte.


    Folgendes habe ich noch versucht, jedoch ohne Erfolg:

    Quellcode

    1. NSData *archive = [NSKeyedArchiver archivedDataWithRootObject:self];
    2. UIViewController *clone1 = [NSKeyedUnarchiver unarchiveObjectWithData:archive];
    3. UIViewController *clone2 = [NSKeyedUnarchiver unarchiveObjectWithData:archive];



    Können Sie bitte noch ein wenig näher auf Ihren Lösungsvorschlag eingehen? :)