Domanda

Ho una superficie di una finestra (nel mio MainMenu.xib), che mi piacerebbe compilare dinamicamente con estranei "viste" come ad esempio un NSTable, IKImageBrowserView ecc in diversi punti del tempo a seconda di alcuni criteri selezionati dall'utente .

  • Come faccio a definire questa zona della finestra in modo tale che possa essere "sostituito" con diversi punti di vista?
  • Come faccio a collegare una tabella o qualche altro scopo di questa zona della finestra?

(È sufficiente posizionare un NSView generica lì e aggiungere una visualizzazione secondaria ogni volta? Sono abbastanza nuovo per Cacao, quindi tutti i puntatori sono i benvenuti)

È stato utile?

Soluzione

In Cocoa moderno, questo è il compito del controller di vista. Cathy Shive ha alcune buone post del blog su di loro ( 1 , 2 , 3 ) , e co-autore un più utile View Controller di classe rispetto alla NSViewController base.

Altri suggerimenti

Ci sono un paio di modi per farlo. Trovo che sia facile da mettere in un "NSView personalizzato", e sostituirlo con la visione reale in windowDidLoad. Sarebbe sembrare qualcosa di simile:

@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

Personalmente vorrei aggiungere 2 viste per la sezione 2. Dicono che un Topview e un bottomView li collegano al vostro codice utilizzando il collegamento nel costruttore di interfaccia. Da lì si può gestire il contenuto di ciascuna vista con:

addSubview (è una funzione dell'oggetto che riceverà l'UIView o oggetto)

è possibile utilizzare questo per aggiungere singoli oggetti o viste ai vostri due punti di vista principali come:

[topView addSubview:roundedUIButton_instance];

o

[topView addSubview:another_view_instance];

removeFromSuperview (è una funzione di un oggetti usati per rimuovere la sua auto)

[roundedUIButton_instance removeFromSuperview];

o

[another_view_instance removeFromSuperview];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top