2

일반적으로 iPhone 용 앱을 사용합니다. 오늘 (유니버설 바이너리) 앱용 인터페이스를 만들려고합니다. 몇 가지 컨트롤이있는 화면이 있는데 UIModalPresentationFormSheet를 사용하여 인터페이스를 수정하고 싶습니다. 그러나 이런 종류의 프리젠 테이션을 사용하는 화면 이후에는 전체 화면으로 돌아가고 싶습니다 (동일한 탐색 컨트롤러 사용).iOS 유니버셜 바이너리 - 스위치 ModalPresentationStyle

처음에는 iPhone 부분에 UINavigationController -> sub controllers가 있습니다. 클래스 컨트롤러가 같기 때문에 iPad와 비슷한 아키텍처를 유지하고 싶습니다. 현재 내가 다음을 수행합니다. UINavigationController -> ModalController -> UINavigationController -> sub controllers 위에서 설명한 것처럼 하위 컨트롤러는 FormSheet에서 전체 화면으로 전환 할 수 있어야하며 상단에 탐색 모음이 있어야합니다. 스토리 보드를 사용하고 있습니다.

그리고 내가 설명을 위해 정말 좋은 아니에요 알고, 여기 내 문제를 명확히해야한다 스크린 샷입니다 : https://dl.dropbox.com/u/9858108/stack_overflow_iPad_nav_issue.jpg

답변

0

좋아, 나는 더러운 해결책을 발견하지만, 그 문제를 해결했습니다. 다음 구성이 있습니다. NavigationController -> UIViewController - [Modal] -> UINavigationController -> UIViewController1 - [Push] -> UIViewController2 (위의 스크린 샷 확인)

이제 ModalView의 크기를 조정하는 것이 좋습니다 (가로 모드를 강제하므로 세로가 지원되지 않지만 코드를 쉽게 수정할 수 있음). 유용한 메서드가 포함 된 singletton 클래스가 있는데 AppKit이라고 부릅니다. AppKit.m에서 : 당신이 그것을 넣어 그래서 내 서브 viewcontrollers에서 지금

#pragma mark - Window functions (modal, ...) 

/** 
* Cette méthode redimmensionne une modal view en type PaperSheet. 
* Utilisé dans le viewDidAppear du controller enfant. 
* Permet de mettre des modal view en fullscreen. 
* 
* @param id viewController Le viewController parent 
*/ 
- (void)resizeModalToPaperSheet:(id) viewController { 
    // Adaptation de la taille de la fenêtre pour iPad 
    if (isIPad) { 
     [viewController navigationController].view.superview.center = CGPointMake(0.0f, 0.0f); 
     [viewController navigationController].view.superview.frame = CGRectMake(84.0f, 242.0f, 540.0f, 540.0f); 
    } 
} 

/** 
* Cette méthode redimmensionne une modal view en type FullScreen. 
* Utilisé dans le viewDidAppear du controller enfant. 
* Permet de mettre des modal view en fullscreen. 
* 
* @param id viewController Le viewController parent 
*/ 
- (void)resizeModalToFullScreen:(id) viewController { 
    // Adaptation de la taille de la fenêtre pour iPad 
    if (isIPad) { 
     [viewController navigationController].view.superview.center = CGPointMake(0.0f, 0.0f); 
     [viewController navigationController].view.superview.frame = CGRectMake(20.0f, 0.0f, 754.0f, 1024.0f); 
    } 
} 

난 당신이 다시 modalview의 크기가 이전의 컨트롤러로부터 위해서 (때문에) 유지되고 누를 때 방법을 두 번 (다른 호출해야 viewDidAppear에서).

의 ViewController 1 (PaperSheet 크기) :

-(void) viewWillAppear:(BOOL)animated { 
    [[AppKit sharedInstance] resizeModalToPaperSheet: self]; 
} 

-(void) viewDidAppear:(BOOL)animated { 
    [[AppKit sharedInstance] resizeModalToPaperSheet: self]; 
} 

의 ViewController 1 (전체 화면 크기) :

-(void) viewWillAppear:(BOOL)animated { 
    [[AppKit sharedInstance] resizeModalToFullScreen: self]; 
} 

-(void) viewDidAppear:(BOOL)animated { 
    [[AppKit sharedInstance] resizeModalToFullScreen: self]; 
} 

그리고 그것은 꽤 잘 작동합니다 전체 화면과 PaperSheet간에 쉽게 전환 할 수 있습니다. 이제 문제가 하나 남아 있습니다. 스토리 보드에서보기는 여전히 작으며 내부에 물건을 추가하는 것은 쉽지 않습니다. 그래서 당신이해야 할 : 스토리 보드에서 1 /를 작은 (상자 아이콘)에있는 뷰 컨트롤러 속성 패널에서 2/클릭이 어떤 도움이 아이 패드 전체 화면

희망의 크기를 설정 코드를 개선하는 방법에 대한 의견은 환영합니다 :)