Frage

Ich habe eine Fläche von einem Fenster (in meinem MainMenu.xib), die ich auf einige Benutzer ausgewählten Kriterien mit nicht verwandten „Ansichten“, wie ein NSTable, IKImageBrowserView usw. zu verschiedenen Zeitpunkten in Abhängigkeit dynamisch füllen möchten .

  • Wie definiere ich diesen Bereich des Fensters, so dass es kann „ersetzt“ mit unterschiedlichen Ansichten werden?
  • Wie lege ich einen Tisch oder eine andere Ansicht zu diesem Bereich des Fensters?

(Ist es genug, um eine generische NSView dort zu platzieren und ein Subview jedes Mal hinzufügen? Ich bin ziemlich neu in Cocoa, so dass alle Zeiger sind willkommen)

War es hilfreich?

Lösung

In der modernen Kakao, dann ist dies die Aufgabe der View-Controller. Cathy Shive hat einige gute Blog-Beiträge über sie ( 1 , 2 , 3 ) und Co-Autor eine nützliche view-Controller-Klasse als die Basis NSViewController.

Andere Tipps

Es gibt ein paar Möglichkeiten, es zu tun. Ich finde, es ist einfach, ein „custom NSView“, setzt in und mit der realen Ansicht in windowDidLoad zu ersetzen. Es wäre in etwa so aussehen:

@interface MyController : NSWindowController
{
    IBOutlet NSView* dummyView;
}
@end

@implementation MyController
-(void)windowDidLoad{
    NSView* actualView = ...; //create the real view here
    [actualView setFrame:[dummyView frame]];
    [actualView setAutoresizingMask:[dummyView autoresizingMask]];

    NSView* superview = [dummyView superview];
    [dummyView removeFromSuperview];
    [superview addSubview:actualView];

    dummyView = actualView; //just incase dummyView is ever used again
}
@end

Persönlich würde ich 2 Ansichten für den 2-Abschnitt hinzuzufügen. Sprich ein TopView und ein bottomView verknüpfen sie mit Ihrem Code die Verknüpfung in Interface Builder verwenden.

: Von dort können Sie den Inhalt jeder Ansicht mit verwalten

addSubview (eine Funktion des Objekts, das die uiview oder Objekt erhalten)

Sie können diese verwenden, um einzelne Objekte oder Ansichten hinzufügen Ihre zwei Hauptansichten wie:

[topView addSubview:roundedUIButton_instance];

oder

[topView addSubview:another_view_instance];

removeFromSuperview (eine Funktion eines Objekt seiner selbst entfernen)

[roundedUIButton_instance removeFromSuperview];

oder

[another_view_instance removeFromSuperview];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top