2012-04-16 14 views
5

Pracuję w Xcode 4.2 i pracuję nad aplikacją, w której chcę, aby ekran menu korzystał z widoku dzielonego. Naprawdę, wszystko, czego potrzebuję, to Split View Controller to podzielenie niektórych opcji menu na lewe okienko i prawy panel. Chcę móc ustawić niestandardowe rozmiary dla kontrolerów widoku głównego i szczegółów, ale nic nie działa dla mnie. Próbowałem aktualizacji rozmiary ramki dla każdego kontrolera widoku z kodem jak:Zmienianie rozmiaru kontrolerów widoku głównego i szczegółów w sterowniku widoku podzielonego?

[self.view setFrame:CGRectMake(0, 0, 768, 502)]; 

w funkcjach viewDidLoad, ale to nie wydaje się wpływać na cokolwiek.

Czy istnieje sposób ustawienia niestandardowych rozmiarów dla kontrolerów widoku głównego i kontrolek widoku szczegółowego kontrolera widoku podzielonego bez tworzenia instancji kontrolerów widoku w przypadku pliku AppDelegate.m? Chcę móc edytować każdy z kontrolerów widoku w serii ujęć, ponieważ są to ekrany menu z wieloma przyciskami i innymi.

Odpowiedz

10

Edytuj: W systemie iOS 8+ względne szerokości można zmienić, określając minimalne/maksymalne wartości pierwotnej wartości kolumny lub wartość preferowanej wartości domyślnej.

Poniższa odpowiedź jest nadal prawdziwe dla iOS < 8:


Nie można zmieniać rozmiary dla kontrolera widoku podzielonego.

Zobacz tutaj: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

„Klasa UISplitViewController jest kontrolerem widok pojemnik, który zarządza dwie tafle informacji Pierwszy panel ma stałą szerokość 320 punktów i wysokości, która odpowiada widocznej wysokości okna drugiego.. okienko wypełnia pozostałą przestrzeń. "

+0

Hmm, ok, dzięki. Czy istnieje inne obejście, które mógłbym potencjalnie wykorzystać? Wszystko, czego naprawdę potrzebuję, to jeden widok z dwoma pionowymi panelami, w których mogę wybrać rozmiar dla każdego z nich. – generaltsow

+0

Możesz po prostu zrobić duży widok z dwoma widokami i przypisać widok każdego w kodzie. –

4

Użyj MGSplitViewController. Oferuje podobne API do UIViewController, ale oferuje dodatkowe funkcje, takie jak podzielona pozycja, która jest tym, czego potrzebujesz.

+0

Czy istnieje nowsza wersja tego kontrolera widoku? Wydaje się przestarzały i nieobsługiwany. Działa jednak na iOS7. – fatuhoku

+0

@fatuhoku Nie jestem pewien, w pewnym sensie przestałem podążać za 'MGSplitViewController' i zbudowałem własne opakowanie dla' UISplitViewController', które pozwoliło mi osiągnąć to, czego potrzebowałem. Szczerze mówiąc, gdybym miał teraz zrobić kontroler widoku podzielonego, zrobiłbym nowy niestandardowy zamiast używać 'MGSplitViewController', ponieważ jest naprawdę bardzo łatwy do osiągnięcia dzięki kontroli rodzicielskiej/podrzędnej kontrolera widoku. –

+0

Yep - używanie widoków kontenerów działało dla mnie w porządku tak daleko, tak naprawdę. Również nie użyłem MGSplitViewController. – fatuhoku

-1
- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex; 
{ 

    return proposedMinimumPosition + 238; 
} 

- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMaximumPosition ofSubviewAt:(NSInteger)dividerIndex; 
{ 
    return proposedMaximumPosition - 200; 
} 

przed powyższej metody delegata dodać [splitView addDelegate:self];

+0

Te metody są przeznaczone dla komputerów Mac z NSSplitViewDelegate. OP nie określał aplikacji na Maca i iOSa, ale ma tag, który mówi "uisplitviewcontroller", który jest na iOS. – cnotethegr8

Powiązane problemy