2016-08-07 32 views
0

Ich glaube, ich verstehe wirklich nicht, wie Ansichten und Fenster durch View-Controller und Fenster-Controller in Storyboards verwaltet werden.Unterklasse NSWindowController oder NSViewController in OS X

Hier ist mein Problem: Ich habe ein Fenster mit einer Hauptansicht, verwaltet von myMainViewController. Alles, was ich tun möchte, ist, eine Schaltfläche in mainView zu machen, um ein anderes Fenster anzuzeigen (das eine andere Ansicht enthält) und Daten von myMainViewController an eine andere Ansicht zu senden. Mit dem Storyboard habe ich einen Fenster-Controller (mit der zugehörigen Ansicht) gezogen und die Schaltfläche mit dem Fenster verbunden (und performsegue). Aber wie soll ich von myMainViewController Zugriff auf die Steuerelemente eines anderenViews?

  • Sollte ich eine anotherWindowController Klasse oder eine anotherViewController Klasse erstellen?
  • Und der zweite Fall, wie kann ich es über myMainViewController zugreifen?
  • Sollte ich beide erstellen, auch wenn ich nichts über das andere Fenster (nur seine Ansicht) zu verwalten hätte?
  • Grundsätzlich sollte die Schaltfläche in der Hauptansicht ein Bild und eine Zeichenfolge an eine andere Ansicht senden, die in einem anderen Fenster eingebettet ist. Ich bin sicher, es ist offensichtlich, aber ich bin ein wenig verwirrt mit der Apple-Dokumentation, ist nicht ganz klar ...

    Dank

    Josh

    Antwort

    0

    Sieht aus wie Sie benötigen: 1) schaffen neue benutzerdefinierte Ansicht Controller (neue Klasse, die Unter classing NSViewController ist) 2) schafft zwei Eigenschaften in ihm (ein für Bild, eine andere für String)

    var myImage: NSImage! 
        var myText: NSString! 
    

    3) nach Drücken der Taste in Ziel, müssen Sie neues Objekt Ihrer erstellen Neu Klasse als eine Variable, und durch sie Zugang zu erstellenden Eigenschaften

    var secondController = SecondViewController() 
        secondController.myImage = //set your image 
        SecondController.myText = //set your string 
    

    4) und nun Ihren zweiten View-Controller (mit presentViewController) präsentieren, und jetzt können Sie Viewcontroller

    +0

    Tanks geöffnet benötigter Eigenschaften in Verfahren viewDidLoad Nutzungs aber anscheinend, die Verwendung von presentViewController widerspricht der Verwendung von segue. Tatsächlich habe ich das Problem endlich gelöst. Ich musste nur prepareforsgue in der ersten Ansicht Controller implementieren und testen 'wenn lassen vc = segue.destinationController.contentViewController als? AnotherViewController ' – Joshua

    +0

    Ja, diese Option ist eine gute Entscheidung, wenn Sie den visuellen Editor verwenden und wenn Ihre Schaltfläche nur den Controller ohne weitere Aktionen öffnen muss, ist meine Methode einheitlicher. – KostiaZzz