2012-12-19 14 views
7

Jaka jest najlepsza metoda implementacji przesuwania między widokami w OS X? Widoki te są inicjowane z końcówek ze swoimi kontrolerami widoku i mają ten sam typ klasy. Aby nadać tło, każdy widok wyświetla odpowiednie dane dla bieżącej daty.Jaka jest najlepsza metoda implementacji przesuwania między widokami w OS X?

Chciałbym utworzyć funkcję, która ładuje dane dla następnej (lub poprzedniej) daty. Mogę po prostu załadować dane do bieżącego widoku, ale czy mogę to zrobić za pomocą animacji podobnej do przesuwania między spacjami w OS X? Wyobrażam sobie, że musiałbym zainicjować nowy widok, załadować tam dane, a następnie zainicjować przesuwanie przejścia do nowego widoku.

Martwię się, że wykonanie wszystkich tych nowych widoków byłoby całkiem złe. Oto kilka opcji, które rozważyłem, aby rozwiązać ten problem:

  • Utwórz słownik NSDate na MYViewController. Załaduj i zapisz każdy widok z tej mapy, ale może to zająć dużo pamięci.
  • Utwórz podwójnie powiązaną listę MYViewController i załaduj/zapisz daty z datami. Może to również potencjalnie zająć dużo pamięci i jeśli użytkownik przeskoczy do daty, pamięć podręczna zostanie po prostu usunięta.

Jakieś myśli? Jeśli istnieje jakiś sposób na załadowanie danych w bieżącym widoku, to uważam, że byłaby to najlepsza opcja.

Dzięki!

+0

Czy rozważałeś użycie tylko dwóch instancji kontrolera widoku? Jeden wyświetla dane, które poruszają się poza ekranem, a jeden wyświetla dane, które poruszają się na ekranie? Byłoby to analogiczne do ponownego użycia komórek w UITableView. –

+0

Przypuszczam, że mógłbym to zrobić. Czy mógłbym dalej zamieniać się między dwoma kontrolerami widoku? Moją jedyną rezerwą jest to, że mam inne odniesienia do kontrolera widoku. Więc musiałbym śledzić, który z nich jest aktualny czy coś takiego? Czy masz przykład, jak to zrobić? –

+0

Ok, więc myślę, że zamierzam zaimplementować coś na wzór [this] (http://liberatiluca.com/blog/2011/08/03/how-uitableview-reuses-cells/). W mojej implementacji ESViewCache będzie analogiczny do UITableView, a ESViewCacheCell będzie analagiczny do UITableviewCell. Zanim jednak to zrobię, zobaczę, czy mogę po prostu podklasować NSTableView i wyświetlić bieżącą "ESViewCacheCell". –

Odpowiedz

0

Czy rozważałeś po prostu używać UIScrollView i mieć jeden UIViewController do zarządzania wszystkimi widokami? Oto dobry tutorial ze strony Ray Wenderlich w sprawie UIScrollView:

http://www.raywenderlich.com/10518/how-to-use-uiscrollview-to-scroll-and-zoom-content

Alternatywnie, czy uznać ewentualnie za pomocą poziomego widoku tabeli? Oto realizacja stron trzecich, które widziałem na inne tak zaleca wypowiedzi:

https://github.com/TheVole/HorizontalTable

Edit

Niestety, szybko przeczytać pytanie i zakłada się, że był na iOS ...

myślę, że może być patrząc na coś takiego NSCollectionView może (nie jestem pewien, czy to wsparcie offScreen poglądy w sposób horyzontalny dobrze czy nie ...?)

Oto docs na nim:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSCollectionView_Class/Introduction/Introduction.html

Oto poradnik na nim:

http://andrehoffmann.wordpress.com/2009/08/29/nscollectionview-tutorial-for-dummies-xcode-3-1-3/

(Szczerze nie zrobili dużo rozwoju OSX, więc trochę z mojego obszaru wiedzy tutaj ... Życzę ci szczęścia!)

+0

Rozważałem UIScrollView, ale nie sądzę, że jest to właściwe dla mojego przypadku. Ta implementacja wymaga skończonej liczby wyświetleń? Każdy widok w moim programie odpowiada wybranemu dniu, więc technicznie istnieje nieskończona liczba widoków. Pozioma tabela brzmi trochę tak, jak chcę. Czy znasz jakieś wdrożenia systemu OS X? W przeciwnym razie prawdopodobnie wykorzystam to jako model i sam go wdrożę. –

+0

Skończyło się na koncepcji tabeli poziomej w mojej realizacji i wydaje się, że działa. Możesz pobrać film [tutaj] (https://dl.dropbox.com/u/345040/Screen%20Recording%202.mov). Prawdopodobnie opublikuję kod, gdy trochę go poleruję. Czy ktoś wie, jak pozbyć się tego szarego materiału podczas przewijania? Czy podczas animacji można dodać separator lub separator? Może powinienem zadać kolejne pytanie ... –

0

Animacja przejścia kakao nie jest łatwa. Jest to o wiele bardziej skomplikowane kodowanie niż zarządzanie kontrolerem widoku.

Musisz zdecydować, jak osiągnąć pożądane efekty.Rzuć okiem na ten dokument i inne referencje: Animation Programming Guide for Cocoa

Podobną pracę wykonałem kilka miesięcy temu. Ostateczna rozdzielczość polegała na używaniu pojedynczego widoku i pokazywaniu efektów animacji tylko za pomocą interfejsów graficznych (rysowanie obrazów), ponieważ było to prostsze niż Core Animation.

Powiązane problemy