2013-01-21 10 views
6

Przesłałem widok kontenera na jeden z moich kontrolerów widoku. Wchodzi w to Segment Embed. Bieg produkuje to:Segmenty do umieszczenia na stronie - iOS 5

'Could not instantiate class named UIStoryboardEmbedSegueTemplate' 

Więc od kilku innych pytań StackOverflow wydaje to nie jest zaimplementowana w iOS 5. Jednakże, pytania nie sugerują poprawki. XCode nie pozwoli mi używać żadnego innego rodzaju segregacji.

Jeśli odpowiedź ma na celu utworzenie niestandardowego widoku kontenera, przejdę do tego. W ciągu ostatnich kilku dni widziałem mnóstwo tego kodu. Zastanawiam się, czy istnieje sposób, aby to zrobić, korzystając z podanego obiektu Container View.

Odpowiedz

9

Problem polega na tym, że Segmentacja osadzona to iOS 6+. To nie dlatego, że starają się wystąpienia EmbedSegue wewnętrzną klasę, która nie istnieje w iOS 5. Oczywistym rozwiązaniem jest, aby nie używać EmbedSegue jeśli potrzebujesz wsparcia iOS 5 :)

Nadchodzi kolejne pytanie - co należy użyć zamiast tego? W tej chwili mam ten sam problem; Podzielę się, jeśli znajdę dla niej odpowiednie rozwiązanie architektury.


Wygląda na to rozwiązanie jest dość oczywiste dla każdego "oldschoolowego" programisty iOS. Oto jak to zrobić.

  1. Na stronie "dominująca" widok kontrolera Instantiate "dziecko" widok kontrolera w viewDidLoad: lub gdy korzystne
  2. [self addChildViewController: childVC];
  3. [self.view addSubview: childVC.view];
  4. childVC.view.frame = ....;

Teraz powinieneś zobaczyć widok, który zrobiłeś dla swojego dziecka VC w stalówce lub scenorysie pojawi się w widoku twojego rodzica, gdzie go określisz.

Mam nadzieję, że to pomoże Wszelkie Szukam duszy oddzielić ich logikę :)

Wiwaty, Dan

+0

tylko dodaje alternatywa EmbedSegue dla iOS <6 –

+0

Może głupie pytanie, ale można wypełnić krok # 4 ? Czy przypisujesz do niego self.view.frame? – canhazbits

+0

Powiedziałbym, że to zależy od twojej sprawy. Jeśli chcesz, aby widok podrzędny zajmował całą dostępną przestrzeń w widoku nadrzędnym, prawdopodobnie chciałbyś użyć childVC.view.frame = parentView.bounds; W tym przypadku widokiem rodzica może być self.view lub widok zastępczy. Symbole zastępcze są bardzo użyteczne podczas dopasowywania symbolu zastępczego w kodzie IB iw kodzie po prostu łącz dziecko childVC.view z widokiem zastępczym bez potrzeby ręcznego obliczania pochodzenia i rozmiaru widoku potomka. Jeśli wolisz, możesz nadal korzystać z childVC.view.frame = CGRectMake (...); i określ ręcznie rozmiar i pochodzenie. Czy to pomaga w twojej sprawie? –