2013-03-25 14 views
14

Se la mia comprensione non è errata, NSTableView basato su celle e NSTableView basato su vista è lo stesso tipo di istanza. Quindi, in che modo cpu distingue le celle e le viste?Qual è la differenza tra NSTableView e NSTableView basati su celle?

Per quanto ne so, il metodo delegato è diverso tra cella e visualizzazione. NSTableView basato su celle richiede tableView:objectValueForTableColumn:row: e NSTableView basato su visualizzazione richiede tableView:viewForTableColumn:row:. Esiste qualcosa che decida che l'istanza di NSTableView si comporti basata su celle o vista?

risposta

18

Oltre alla descrizione seguente Vorrei suggerire di passare attraverso http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TableView/Introduction/Introduction.html

In OS X versione 10.6 e precedenti ogni singola cella all'interno di una vista tabella è stata richiesto di essere una sottoclasse di NSCell. Questo approccio ha causato limitazioni nella progettazione di celle personalizzate complesse, in genere richiedendo allo sviluppatore di scrivere la propria sottoclasse NSCell. Inoltre, fornire animazioni, come le visualizzazioni di avanzamento, era estremamente difficile.

Nelle viste di tabella OS X versione 10.7 sono state ridisegnate e ora supportano l'utilizzo di viste come singole celle. Questi sono indicati come visualizzazioni delle tabelle basate su viste. Le visualizzazioni delle tabelle basate su viste consentono di progettare celle personalizzate nella porzione di Generatore di interfacce di Xcode 4.0. Permette un facile layout del tempo di progettazione e facilita l'animazione delle modifiche e la personalizzazione del disegno. Come con le visualizzazioni delle tabelle basate sulle celle, le visualizzazioni delle tabelle basate su viste supportano la selezione, il trascinamento della colonna e altri comportamenti di visualizzazione tabella previsti dall'utente. L'unica differenza è che allo sviluppatore viene data molta più flessibilità nella progettazione e implementazione.

La creazione di viste tabella basate su viste e celle e l'aggiunta di colonne utilizzano le stesse tecniche all'interno di Interface Builder. Le differenze si verificano nel codice dell'applicazione quando si forniscono le singole celle, si inserisce il contenuto della vista tabella e si personalizza l'aspetto della vista tabella. Inoltre, le tecniche di associazione del cacao sono completamente diverse tra le due implementazioni.

Problemi correlati