2012-03-10 15 views
10

Chciałbym zaprojektować UIView, który jest większy niż ViewController w Storyboard (iOS 5).Jak zaprojektować oddzielne UIView poza dowolnym ViewController w Storyboard?

UIView powinien być używany jako podzbiór UIScrollView, a tym samym być większy niż którykolwiek z moich istniejących ViewControllers. Jak mogę utworzyć taki UIView w Storyboard i powiązać go z moim UIScrollView?

Chciałbym zrobić to bez plików XIB, jeśli to możliwe.

Dziękujemy!

+0

Trudny problem, to było tak łatwe przed epoką storyboardów. –

Odpowiedz

20

nie widzę innego wyjścia niż używanie xibs, ale to nie jest takie irytujące:

//We have file called "View.xib" in our project. It contains one SINGLE view 
NSArray *xibContents = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil]; 
UIView *view = [xibContents lastObject]; //safer than objectAtIndex:0 

[self.scrollview addSubview:view]; 
self.scrollview.contentSize = view.frame.size; 

Na zamówienie aby nawiązywać połączenia IB, możesz ustawić klasę filesOwner w Xib, aby była twoją kontrolką viewController i połączyć się jak zwykle.

+1

Być może zechcesz rzucić okiem na moje powiązane pytanie/odpowiedź dotyczące decyzji projektowych, które mogą to uzasadniać: http://stackoverflow.com/questions/11386111/uiview-out-of-a-view-controller-in-storyboard – KPM

+0

Czyste i superszybkie rozwiązanie. Dziękuję Ci bardzo. – androniennn

+0

Dodano samodzielny plik .xib, który nie działa w trybie automatycznego układu. Chociaż cały projekt jest z automatycznym układem. Jak zastosować układ automatyczny w tym pliku .xib? – shahnilay86

2

można umieścić UIView do swojej Scrollview i bezpośrednio zaprojektować go wewnątrz viewController twojego scrollView

+0

Cześć Ugur, moje UIView jest większe niż ScrollView, więc większość elementów sterujących znajdowałaby się poza aktualnie widocznym obszarem. – AlexR

+0

Niż Xibs może być jedynym rozwiązaniem do zaprojektowania go w konstruktorze interfejsów –

1

Znalazłem sposób edycji widoku dodanego do sceny (znajdującego się na tym samym poziomie hierarchii co ViewController).

Niestety jest to od hackish rodzajów działań. Moja Xcode wersja to Version 4.5.2 (4G2008a). Przetestowałem to w prawdziwym projekcie i nowym pustym projekcie.

Podstawową ideą jest to, że Xcode ma możliwość edycji takich widoków zewnętrznych, niestety ten tryb nie aktywuje się bezpośrednio.

W metodzie, że mam znaleźć trzeba mieć 2 poziomy hierarchii wewnątrz widoku zewnętrznym:

 
Scene 
|- VC 
    |- View 
|- ExternalView 
    |- SubView1 
     |- SubView2 
  • Następnie goto Document Outline panelu
  • znaleźć SubView2 w drzewie sceny
  • Kliknij dwukrotnie to

Pojawi się pole edycyjne i jego wartość c współrzędne zostaną zapisane w danych użytkownika projektu, dzięki czemu możesz przenieść go do bardziej odpowiedniego miejsca, jeśli chcesz, i następnym razem, gdy otworzysz scenorys w IB na maszynie, będzie tam. Chociaż myślę, że na innych maszynach będziesz musiał to zrobić ponownie (tego nie testowałem).

+0

Czy znalazłeś sposób to zrobić w Xcode5? – MathewS

Powiązane problemy