Was hat der Programmiert sich dabei gedacht?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Was hat der Programmiert sich dabei gedacht?

    Hi,

    ich habe mal wieder ein Projekt geerbt wo ich teilweise nur wie ein Ochse vorm Berg stehe. Zum Erstellen des ersten Viewcontroler in

    applicationDidBecomeActive

    ist folgender Code zu finde

    Quellcode

    1. if([self isIPad]) {
    2. self.loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil hideView:((MainViewController*)self.window.rootViewController).hideSplitViewView] ;
    3. self.loginViewController.delegate = self;
    4. self.loginViewController.loginOperation = [[LoginOperation alloc] init] ;
    5. // falls ein Viewcontroller bereits modal angezeigt wird muss er erst entfernt werden bevor der anmeldeVC angezeigt werden kann
    6. if (self.window.rootViewController.modalViewController!=nil) {
    7. self.modalVCforAfterLogin = [NSMutableArray array];
    8. [self.modalVCforAfterLogin addObject:self.window.rootViewController.modalViewController];
    9. if (self.window.rootViewController.modalViewController.modalViewController!=nil) {
    10. [self.modalVCforAfterLogin addObject:self.window.rootViewController.modalViewController.modalViewController];
    11. }
    12. [self.window.rootViewController dismissViewControllerAnimated:FALSE completion:nil];
    13. }
    14. self.loginViewController.modalPresentationStyle = UIModalPresentationFormSheet;
    15. [self.window.rootViewController presentViewController:self.loginViewController animated:YES completion:nil];
    16. }
    Alles anzeigen


    Kann mir irgendjemand erklären was derjenige sich dabei gedacht hat, warum das überhaupt funktioniert und wie ich das jetzt hinbekomme, das das deprecated warning für den nicht mehr existierenden modalViewController weg bekomme?

    Danke

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Kann mir irgendjemand erklären was derjenige sich dabei gedacht hat, warum das überhaupt funktioniert

    Nee, da steig ich so auch nicht durch. Allein wenn ich schon das „FALSE“ sehe kann ich mir gut vorstellen, welche Qualität der Code hat.

    Thallius schrieb:

    und wie ich das jetzt hinbekomme, das das deprecated warning für den nicht mehr existierenden modalViewController weg bekomme?

    Nimm statt modalViewController einfach presentedViewController. Steht doch in der Doku. ;)
  • Thallius schrieb:

    Kann mir irgendjemand erklären was derjenige sich dabei gedacht hat

    Die Viewhierarchie in einer eigenen Collection vorhalten.
    Er ging wohl davon aus, dass applicationDidBecomeActive nicht automatisch bedeutet, dass man bei 0 anfängt.
    Ergo schauen wir mal, ob es in der OS-eigenen Navigationshistorie noch einen ModalViewController gibt und falls ja, sichern wir uns die Navigationshistorie (also einen neuen ModalViewController sowie den nach der Navigation anzuspringenden Viewcontroller), verwerfen den aktuellen ModalViewController und präsentieren dann unseren neuen.
    Wie er im Kommentar richtig erkannt hat, kann immer nur ein View modal angezeigt werden. Vermutlich möchte er durch dieses Konstrukt eine Exception vermeiden, die auftreten könnte, wenn ein weiteres View modal angezeigt werden soll.

    Thallius schrieb:

    warum das überhaupt funktioniert

    Warum sollte das nicht funktionieren? Er hantiert doch nur ein bisschen mit Referenzen herum und verwirft einen ViewController.
    Voodoo, Hexenwerk und Raketenwissenschaft ist was Anderes.

    Thallius schrieb:

    und wie ich das jetzt hinbekomme, das das deprecated warning für den nicht mehr existierenden modalViewController weg bekomme?

    Was Michael sagt.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Michael schrieb:


    Nimm statt modalViewController einfach presentedViewController. Steht doch in der Doku. ;)


    Aehm nein. Es gibt ja auch keinen

    Quellcode

    1. [self.window.rootViewController.modalViewController


    mehr. Das present habe ich ja schon geändert. Aber woher bekomme ich jetzt den Zeiger auf das ModalView?

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Auch als erfahrener Entwickler darf man einen Blick in die Apple Doku werfen. Dort steht z.B.
    modalViewController

    The controller for the active presented view—that is, the view that is temporarily displayed on top of the view managed by the receiver. (read-only) (Deprecated in iOS 6.0. Use presentedViewController instead.)
    ;)