OS X App ohne Storyboards und Nib

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

  • OS X App ohne Storyboards und Nib

    Hallo Leute,
    ich habe iOS Erfahrung und wollte jetzt mal eine kleine OS X App machen. Ich habe mir es angewöhnt unter iOS ohne Storyboard und Nib Files zu arbeiten und wollte das unter OS X beibehalten, dabei bin auf ein paar Probleme gestoßen. Aktuell verstehe ich einfach nicht warum von meinem WindowController die Window did load nicht aufgerufen es ist ein einfach WindowController und ich benutzte die init with window Methode das einzige was ich mache das ich vom ContentViewController die loadView überschrieben habe und auch nicht super aufrufe vielleicht liegt es daran.

    Danke schon einmal im Vorhinein vor die Hilfe
  • Wenn in der Basisklasse eine Methode definiert/implementiert ist, dann sollte man in der abgeleiteten Klasse eigentlich immer per super auch die Methode der Basisklasse aufrufen.

    Hier und da mag es dafür mal eine Ausnahme geben, aber generell sollte man per super auch die Methode der Basisklasse aufrufen. ;)
  • Ich Benutze den ViewController auch ohne Storyboard und Nib wenn ich kein Nib Name angeben habe versucht er automatisch nib zu lasen mit dem Klassen name
    /* The designated initializer. The specified nib should typically have the class of the file's owner set to NSViewController, or a subclass of yours, with the "view" outlet connected to a view. If you pass in a nil nib name then -nibName will return nil. -loadView can be used to assign a view before -view is invoked. If you pass in a nil bundle then -nibBundle will return nil and -loadView will interpret it using the same rules as -[NSNib initWithNibNamed:bundle:].

    On 10.10 and higher, a nil nibName can be used, and NSViewController will automatically attempt to load a view with the same class name. See loadView for more information.
    */
    deswegen rufe ich nicht super auf


    hier der code von meinem ViewController pastebin.com/kggtLncF
  • MCDan schrieb:

    Hier und da mag es dafür mal eine Ausnahme geben, aber generell sollte man per super auch die Methode der Basisklasse aufrufen.
    Für loadView bzw. loadWindow gilt das aber nicht, da diese Methoden den View bzw. das Fenster aus dem Nib oder Storyboard laden.

    @Vostr0162: Kannst du mal bitte versuchen, dein Anliegen etwas klarer zu formulieren? (Weniger Rechtschreibfehler, kürzere Sätze, Methodennamen richtig schreiben, Fragen als Fragen formulieren, Sourcecode nicht verlinken sondern in Code-Tags einfügen)
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    MCDan schrieb:

    Hier und da mag es dafür mal eine Ausnahme geben, aber generell sollte man per super auch die Methode der Basisklasse aufrufen.
    Für loadView bzw. loadWindow gilt das aber nicht, da diese Methoden den View bzw. das Fenster aus dem Nib oder Storyboard laden.
    @Vostr0162: Kannst du mal bitte versuchen, dein Anliegen etwas klarer zu formulieren? (Weniger Rechtschreibfehler, kürzere Sätze, Methodennamen richtig schreiben, Fragen als Fragen formulieren, Sourcecode nicht verlinken sondern in Code-Tags einfügen)
    er hat aber weder nib noch storyboard. somit wird nichts geladen und eben auch die methode nicht aufgerufen. Wenn er das selbst setzt ist es ja sinnvoll dass die methoden nicht aufgerufen werden weil ja nichts "geladen" wird.
  • gritsch schrieb:

    macmoonshine schrieb:

    MCDan schrieb:

    Hier und da mag es dafür mal eine Ausnahme geben, aber generell sollte man per super auch die Methode der Basisklasse aufrufen.
    Für loadView bzw. loadWindow gilt das aber nicht, da diese Methoden den View bzw. das Fenster aus dem Nib oder Storyboard laden.@Vostr0162: Kannst du mal bitte versuchen, dein Anliegen etwas klarer zu formulieren? (Weniger Rechtschreibfehler, kürzere Sätze, Methodennamen richtig schreiben, Fragen als Fragen formulieren, Sourcecode nicht verlinken sondern in Code-Tags einfügen)
    er hat aber weder nib noch storyboard. somit wird nichts geladen und eben auch die methode nicht aufgerufen. Wenn er das selbst setzt ist es ja sinnvoll dass die methoden nicht aufgerufen werden weil ja nichts "geladen" wird.
    Richtig, deswegen ginge der Super-Aufruf auch in die Hose.
    „Meine Komplikation hatte eine Komplikation.“
  • @macmoonshine ja ich versuche es noch einmal noch einmal sorry wegen meiner Rechtschreibung.
    Das ist meine erste OS X App und ich wollte einfach meine Code Struktur und Konzept wie ich das unter iOS kenne einfach übernehmen das bedeutet das ich SnapKit benutzen will und ohne Storyboard oder Nib Datei. Leider musst ich festellen das es doch nicht so einfach ist, weil OS X doch sich noch einmal unterschiedlich verhält. Vielleicht macht es sogar sinn das windowDidLoad nicht aufgerufen wird und schreibe einfach eine setup Methode die ich dan selber aufrufen aber da frage mich warum dan viewDidLoad aufgerufen wird wollte es einheitlich haben deswegen wahr ich jetzt so fixiert darauf das windowDidLoad aufgerufen wird. Vielleicht benötige ich unter OS X doch eine andere Code Struktur oder man muss es mit Storyboards und Nib Files machen was mich wundern würde weil Storyboard ist nicht so geil meiner Meinung nach.
  • MCDan schrieb:

    Heisst für mich so viel, dass die Methode nur aufgerufen wird, wenn ein NIB File geladen wurde, oder etwa nicht?

    Apple Doku schrieb:

    You should never directly invoke this method. Instead, access the window property so the windowDidLoad and windowWillLoad methods are invoked.
    Das schließt meiner Meinung nach selbstgebastelte Fenster mit ein. ;)
    „Meine Komplikation hatte eine Komplikation.“