2013-03-25 9 views
14

Jeśli moje zrozumienie nie jest błędne, NSTableView oparty na komórce i NSTableView oparty na widoku to ten sam typ instancji. Następnie, w jaki sposób procesor rozróżnia opcje oparte na komórkach i na widokach?Na czym polega różnica NSTableView opartego na komórce i NSTableView opartego na widoku?

O ile mi wiadomo, metoda delegowania różni się w zależności od komórki i widoku. NSTableView bazujący na komórkach potrzebuje tableView:objectValueForTableColumn:row: i wymaga NSTableView w widoku tableView:viewForTableColumn:row:. Czy jest coś, co decyduje o tym, że wystąpienie NSTableView zachowuje się w oparciu o komórki lub widok?

Odpowiedz

18

Oprócz następujący opis Proponuję przejść http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TableView/Introduction/Introduction.html

W OS X w wersji 10.6 i wcześniejszych każda pojedyncza komórka w widoku tabeli musiała być podklasą NSCell. Takie podejście spowodowało ograniczenia przy projektowaniu złożonych komórek niestandardowych, zwykle wymagające od programisty napisania własnej podklasy NSCell. Ponadto udostępnianie animacji, takich jak widoki postępu, było niezwykle trudne.

W wersjach systemu OS X wersja 10.7 widoki tabeli zostały przeprojektowane i obecnie obsługują widoki jako pojedyncze komórki. Są one określane jako widoki tabelaryczne oparte na widoku. Widoki tabel oparte na widoku umożliwiają projektowanie niestandardowych komórek w części XKenerget interfejsu w programie Interface Builder. Pozwala na łatwy układ czasu projektu, a także ułatwia animację zmian i dostosowywanie rysunku. Podobnie jak w przypadku widoków tabel opartych na komórkach, widoki tabel oparte na widokach obsługują selekcje, przeciąganie kolumn i inne zachowania tabelowe oczekiwane przez użytkownika. Jedyna różnica polega na tym, że programista ma dużo większą elastyczność w projektowaniu i wdrażaniu.

Tworzenie widoków tabelarycznych i opartych na komórkach oraz dodawanie kolumn wykorzystuje te same techniki w programie Interface Builder. Różnice występują w kodzie aplikacji podczas dostarczania poszczególnych komórek, zapełniania zawartości widoku tabeli i dostosowywania wyglądu widoku tabeli. Również techniki wiązania kakao są całkowicie różne w obu implementacjach.

Powiązane problemy