Newsgroup: it.comp.macintosh
Titolo: Interface Builder (Development)

Ciao a tutti.
Probabilmente continuo a non vedere l'ovvio ma non riesco a capire due
cose:
1) Come diavolo si creano le Split view in Interface Builder?
2) Guardando in altri progetti nel tab "Instances" di Interface Builder
appaiono delle iconcine "View" che non sono ne' finestre ne' pannelli
ne' drawers. Ma come diavolo si creano queste benedette viste?
Scusate se la soluzione e` banale, ma mi sono bloccato e non riesco
proprio a vederla.
Grazie

 proprio a vederla.
ma di che? ;)
-- 
http://emeraldion.it
At night a candle's brighter than the sun


Grazie della consulenza :)
Approfitto della tua esperienza per chiederti un'altra cosuccia.
Ok. Subclasso NSView, Istanzio e mi compare l'iconcina. Chiamiamo
questa classe MyView.
Se faccio doppio click su quell'iconcina posso metterci altri controlli
(bottoni, etc.)
Quindi questo e` utile per "componentizzare" e fattorizzare le view in
classi differenti invece di avere tutti i delegate etc. in un'unica
classe.
Dopo che ho popolato MyView (doppio click sulla relativa iconcina ed
aggiunta di controlli trascinandoli dalla palette di IB), nella
finestra principale creo un oggetto di tipo custom view e gli assegno
come custom class la sottoclasse MyView.
Domandina: Perche` quando testo l'interfaccia non mi fa vedere i
controlli che ho messo in MyView e che correttamente mi vengono
visualizzati quando doppio-clicco sulla sua iconcina nella sezione
instances?
Grazie ancora!

 instances?
forse non ti e' chiara la magia celata dietro i file NIB.
Quando stai aggiungendo i controlli all'istanza di MyView, stai
aggiungendo variabili istanza per quella particolare istanza che vedi
nel riassunto "instances" -- non stai affatto, come mi pare di capire
che tu creda -- modificando il "template" di MyView.
Se crei un'altra istanza di MyView, parti da zero da quello che c'e'
scritto nel suo sorgente.



Scusa, ma allora come uso quella particolare istanza di MyView?

 Scusa, ma allora come uso quella particolare istanza di MyView?
Solitamente si istanziano nel NIB gli oggetti "non grafici", come classi
controller o modello, per connetterle alle outlet delle altre istanze.
Questo perche' per connettere le istanze di classi grafiche alle outlet
di un oggetto e' sufficiente ctrl-draggare dall'oggetto sulla istanza
della classe vista.
Forse mi sfugge quello che intendi fare.



Forse con un'immagine facciamo prima :)
http://img475.imageshack.us/my.php?image=picture2ld5.png
Questo e` quello che ho sul mio desktop. Una applicazioncina
banalissima in cui ho
questa classe CGPDFView che ho creato tramite IB subclassando NSView e
cliccando su "Create Files for CGPDFView" (Il codice e` a destra).
Nella main window ho una custom view che come "tipo" ha questo
CGPDFView (come evidenziato dall'inspector)
Se faccio doppio click sull'icona dell'istanza di CGPDFView mi si apre
una finestrella (quella in alto) in cui posso depositare altri
controlli etc.
Ora quello che non capisco e` qual e` la semantica di quella
finestrella.
Il design della view che faccio in quella finestrella come lo posso
usare/riusare visto che quando testo l'interfaccia nella finestra
principale la parte assegnata a CGPDFView risulta essere comunque
vuota?
Io mi aspettavo di vedere quello che mettevo a livello di controlli
nella finestra CGPDFView in ogni luogo dove "creavo" una customview
associata alla classe CGPDFView. Ma evidentemente non e` cosi`. E non
capisco perche' :)

 capisco perche' :)
Tutto chiaro. Ho avuto simili dubbi anch'io all'inizio, provenendo da
JBuilder e Netbeans.
La CGPDFView contenuta nella spitview della finestra principale e' gia'
un'_istanza_ (che chiameremo A) della classe -- non un segnaposto. Per
aggiungerle controlli devi trascinarli su di essa.
L'istanza CGPDFView e' un oggetto distinto da quello che hai nella
finestra principale (e che non compare nel pannello Instances).
Aggiungere controlli all'altra istanza B che vedi nel pannello Instances
non modifichera' di una virgola l'istanza A.
Per vedere in dettaglio tutte le istanze contenute nel NIB, e inoltre la
gerarchia di superview-subview, passa alla visualizzazione dettagliata
cliccando sulla widget azzurrina sopra alla scrollbar destra.


 La CGPDFView contenuta nella spitview
splitview (non oso immaginare cosa faccia una spitview ;)



Ok. Quindi per esempio per accedere all'istanza B che appare nel
pannello delle istances
creo un Outlet nell'appcontroller (ad esempio), ctrl-drag da
appcontroller a B e poi la connetto alla outlet.
In questo modo posso referenziare B da appcontroller ed aggiungerla
programmaticamente alla splitview.
E` cosi` che si fa normalmente?
Se si, non sarebbe meglio farlo in maniera automatica direttamente
dentro IB?
Grazie ancora per il feedback :)

 Grazie ancora per il feedback :)
se per te l'inglese non e'... arabo cerca negli archivi di
cocoabuilder.com
, ti risparmierai tanti scervellamenti
