5

Mam tu mały problem. Mam dwa kontrolery widoku na tym samym scenorysie (MainStoryboard -> Calc kontroler widoku w trybie pionowym i kontroler widoku Calc w trybie poziomym). Kiedy najpierw utworzyłem bool dla shouldAutoRotate, to się obróciło, ale było "i nadal jest" problemem z renderowaniem, ponieważ niektóre przyciski itp. Nie znajdowały się w miejscu, w którym mógłbyś się spodziewać, innymi słowy, były wszędzie w miejscu Tryb krajobrazu. Stworzyłem teraz 2 kontrolery widoku w trybie poziomym i głównym trybie portretu. Teraz kluczem jest przełączanie pomiędzy tymi dwoma kontrolerami przy obrocie.Przełączanie między dwoma kontrolerami widoku na tym samym scenorysie, w trakcie obracania przy użyciu polecenia willAutorotateTo ... nie działa,

w CalculatorViewController.mi mieć
UPDATE
Zauważyłem, że niektóre metody zostały usunięte z iOS 6 (i to taki, używam teraz) po kilku badań wykazały, że w iOS 6, " rodzaj prawidłowy sposób "byłoby to

@synthesize portraitView, landscapeView; 

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 
-(NSUInteger)supportedInterfaceOrientations:toInterfaceOrientation 
{ 
    if(UIInterfaceOrientationMaskAllButUpsideDown) 
    { 
     if (UIInterfaceOrientationPortrait) 
     { 
      self.view = portraitView; 
     } 
     else if (UIInterfaceOrientationLandscapeLeft) 
     { 
      self.view = landscapeView; 
     } 

    } 
    return YES; 

}  

jednak chociaż myślę, że jestem przy użyciu właściwych metod w stosunku do iOS 6 i wciąż nie mogę uzyskać prawidłowy sterownik aby być wezwany obrotu

aw CalculatorViewController.h

@interface CalculatorViewController : UIViewController { 


    IBOutlet UIView *portraitView; // declaring view - portrait 
    IBOutlet UIView *landscapeView; // declaring view - landscape 
    //rest of irrelevant code below 

} 
@property (nonatomic, retain) UIView *portraitView; 
@property (nonatomic, retain) UIView *landscapeView; 

enter image description here prostu zignoruj ​​te 2 białe kontrolery Obecnie są one nieistotne. Składania obrazu, aby pokazać te 2 Widok kontrolerów

Dziękuję za poświęcony czas

+0

Nie ma metody o nazwie willAutorotateFromInterfaceOrientation :. Czy to literówka, czy to nawet nie kompiluje? – rdelmar

+0

@rdelmar Emmm jest metoda, jeśli spojrzysz na - (bool) willAutorotate .... w pierwszym kawałku kodu? –

+0

Widzę to w twoim kodzie. Czy to się nazywa? Nie mogę znaleźć takiej metody w dokumentacji Apple. Jeśli istniało, musi to być pre-iOS 5. – rdelmar

Odpowiedz

3

robiłem rzeczy, jak to kilka razy, i to często łatwiej jest mieć swój ViewController mieć pustą pogląd. Następnie dodaj widok Pejzaż jako krajobraz główny w orientacji poziomej, a następnie usuń go po obróceniu do portretu i tak dalej. Jeśli spróbujesz mieć oddzielne VC, wtedy twój będzie miał splątany bałagan kodu oszczędzającego stan tylko po to, aby płynnie przejść.

Można nawet manipulować tym projektem, ponieważ oba są stale subskrybentami i po prostu pokazują/ukrywają je w razie potrzeby. To wymaga więcej pamięci, ale możesz zrobić ładne animacje przejścia.

W ten sposób wszystkie połączenia i logika będą w jednym VC i tylko interfejs się zmieni.

+0

Tak, tak właśnie zrobiłem, ponieważ było nieco łatwiejsze rozwiązanie, chyba na ten problem. –

Powiązane problemy