2010-05-09 4 views
12

Nie mogłem znaleźć nigdzie dobrej odpowiedzi. Używam UINavigationController dla mojej aplikacji na iPhone'a, wszystko jest generowane programowo, nic w Konstruktorze interfejsu. Próbuję przenieść moją aplikację na iPada, używając UISplitViewController i mojego istniejącego UINavigationController, ale nie jestem pewien, gdzie powinienem mieć logikę mojego programu oddzielającą kontrolery widoku dla iPhone'a lub iPada.Jak utworzyć uniwersalną aplikację iPhone/iPad, która programowo korzysta z UISplitViewController i UINavigationController?

Czy mogę ustawić mój główny plik, aby użyć innego delegata aplikacji, czy też mogę korzystać z tego samego delegata aplikacji i mieć skonfigurowany w nim interfejs użytkownika?

Poza tym za każdym razem, gdy próbuję skompilować moją aplikację na symulatorze, nie rozpoznaje ona UISplitViewController ani nawet warunku, w którym sprawdzam, czy klasa istnieje.

Czy mogę sprawić, że ktoś postawi mnie we właściwym kierunku, pamiętając, że nie używam żadnych ksywek?

Odpowiedz

20

Jeśli chcesz zobaczyć przykład całkowicie zautomatyzowanego interfejsu iPhone/iPad, który korzysta z widoku podzielonego, możesz pobrać kod źródłowy mojej aplikacji Molecules.

W ramach tej aplikacji korzystam z jednego uczestnika aplikacji, ale inaczej skonfigurowałem interfejs w zależności od tego, który język interfejsu użytkownika jest obecny (na iPadzie lub iPhonie). Dla iPhone'a tworzę instancję kontrolera widoku root, który zarządza odpowiednim interfejsem dla tego urządzenia. W przypadku iPada najpierw utworzę obiekt UISplitViewController i dołączę go do okna głównego, a następnie utworzę kontroler widoku głównego dla konkretnego urządzenia iPad i umieści go jako widok szczegółowy kontrolera widoku podzielonego (z kontrolerem nawigacyjnym, którego używam do wyboru elementów jako lewy kontroler dla widoku podzielonego).

Jeszcze raz polecam, patrząc na projekt aplikacji, aby zobaczyć, jak ustawić programowo. Kod jest dostępny na licencji BSD, więc możesz go skopiować i wkleić do swojej aplikacji, jeśli chcesz.

Jeśli chodzi o błędy kompilacji, musisz przenieść swój cel aplikacji, aby był aplikacją uniwersalną, korzystając z opcji menu "Zaktualizuj bieżący cel dla iPada". Po zakończeniu ustaw SDK kompilacji do wersji 3.2. Przejdź do ustawień kompilacji aplikacji i ustaw jej Cel wdrożenia na najwcześniejszy system operacyjny, który chcesz obsługiwać w swojej aplikacji (przy czym 3.0 jest najdalszym z możliwych).

Wreszcie, musisz użyć UIKit z U-Link. Aby dowiedzieć się, jak to zrobić, zobacz moją odpowiedź: here. Słabe powiązanie frameworków nie jest już konieczne, jeśli budujesz przy użyciu zestawu SDK systemu iOS 4.2 lub nowszego. Po prostu sprawdź obecność odpowiednich klas w środowisku wykonawczym, sprawdzając, czy ich metoda zwraca nil.

+0

Dziękuję bardzo, kod źródłowy molekuł naprawdę pomógł mi zrozumieć całość. Używam widok z boku widoku podzielonego dla mojego widoku tabeli, który współużytkuje mój istniejący widok tabeli o aplikacji dla iPhone'a, a widok szczegółów podzielonego widoku składa się teraz z dwóch innych widoków i jest dostępny dla nawigatora. btw, uwielbiam widzieć pi cubed na iPadzie. –

+0

Użyłem także [[UIApplication sharedApplication] .delegate performSelector: @selector (PushMyViewController)]; naciśnięcie ViewController na moim prawym widoku .. czy to dobrze, czy źle? obawiam się, że coś strasznego może się wydarzyć później lol –

+0

Dzięki za dostarczenie źródła molekuł! Kiedy buduję z Active SDK = Simulator 3.2, mogę uruchomić symulator iPada. Ale jak można przetestować tę aplikację za pomocą symulatora w trybie iPhone'a? Kiedy próbuję ustawić Active SDK = Simulator 3.1.3, otrzymuję kilka błędów kompilacji (np. Nie mogę znaleźć deklaracji protokołu UISplitViewControllerDelegate).Co ja robię źle? Dzięki! –