4

스탠포드 iPhone 프로그래밍 과정을 지정합니다. 이 프로그램의 목적은 tableViewController에서 사진을 찾아보고 ImageViewController에 표시하는 것입니다.IOS 8 SplitViewController iPhone 시뮬레이터 초상화 세부 사항 뒤로 버튼 문제보기

원본 코드는 iOS 7 환경에서 작성되므로 iPhone 및 iPad 용 스토리 보드 2 개가 있습니다. 전자는 tabViewController를 사용하고 후자는 splitViewController를 사용합니다.

iOS 8을 사용하면 iPhone 및 iPad에서 splitViewController를 사용할 수 있으므로 iPhone 스토리 보드를 삭제하고 iPad 하나를 범용 레이아웃으로 사용하십시오. 스토리 보드 레이아웃은 다음과 같습니다. 레이아웃 이미지를 게시 할 수 없으며 평판이 충분하지 않습니다. click here to see the storyboard

가장 낮은 navigationViewController가있는 tableViewController를 두 개의 연결 고리로 설정하고 "세부 사항 표시"으로 설정합니다. 그리고 Xcode 템플릿 "Master-detail application"에서와 마찬가지로, splitViewController를 위임하도록 설정하고, 내 detailViewController (ImageViewController)의 leftBarButtonItem을 displayModeButtonItem에 appDelegate으로 설정했습니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
// Override point for customization after application launch. 
    UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; 
    UINavigationController *navigationController = [splitViewController.viewControllers lastObject]; 
    navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem; 
    splitViewController.delegate = self; 
    return YES; 
} 

문제 아이폰 세로 모드에 있지 않습니다 다시 버튼을 "마스터"는 ImageViewController의 왼쪽 상단 모서리에 나타납니다. iPad 모드에서는 모든 것이 정상적으로 작동합니다.

여기 내 코드를 연결하십시오 : code for this program. 누군가가 도울 수 있기를 바랍니다. 감사!

답변

0

나는 똑같은 문제가있었습니다. 여기 http://nshipster.com/uisplitviewcontroller/에서 자습서를 따라 갔지만 여전히 작동하지 않습니다. 문제가 무엇인지 확실하지 않습니다.

프로그래밍 방식으로 스위치를 종료했습니다. 가장 우아한 솔루션은 아니지만 작동합니다.

if UIDevice.currentDevice().userInterfaceIdiom == .Phone { 
    self.navigationController?.pushViewController(settingsViewController, animated: true) 
} else { 
    self.detailViewController?.setViewControllers([settingsViewController], animated: false) 
} 
+0

신속한 문법을 ​​이해하지 못합니다. 첫 번째 줄은 userInterface가 iPhone인지 확인하는 것입니다. 질문은 무엇입니까 –

+0

navigationController와 .pushViewController 사이의 물음표는 무엇을 의미합니까? 마지막 코멘트를 편집하지 못해 죄송합니다. (5 분 제한) –

+0

물음표를 사용하면 참조가 nil인지 여부를 확인할 수 있으며 참조가 nil이 아닌 경우에만 메서드 (pushViewController 또는 setViewControllerers)를 호출합니다. 기본적으로 나는 아이폰 애플 리케이션에 컨트롤러를 밀어 ipad 애플 리케이션에서 나는 현재의 detailViewController를 바꾼다. 희망이 당신에게 도움이 되길 바래요 :) – Prine

0

ImageViewController (즉, 자세히보기)에서 사용자 정의 된 왼쪽 막대 버튼을 사용하여 푸는 긴급 기술 (프로그래밍 방식)을 사용했습니다.

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    // Need a back button to appear when not in split view i.e. iPhone mode 
    // Wire up to unwind segue action 
    if (!self.splitViewController) { 
     UIImage *image = [UIImage imageNamed:@"ImageViewControllerBarBackIndicatorDefault"]; 
     UIBarButtonItem *btnBack = [[UIBarButtonItem alloc] 
           initWithImage:image 
           style:UIBarButtonItemStylePlain 
           target:self 
           action:@selector(OnClick_btnBack:)]; 
     self.navigationItem.leftBarButtonItem = btnBack; 
    } 
} 

-(IBAction)OnClick_btnBack:(id)sender { 
    [self performSegueWithIdentifier:@"unwind" sender:self]; 
} 

#pragma Unwind Segue 

- (BOOL)canPerformUnwindSegueAction:(SEL)action 
      fromViewController:(UIViewController *)fromViewController 
        withSender:(id)sender { 
    return YES; 
} 

- (IBAction)unwindFromImageViewController:(UIStoryboardSegue *)unwindSegue { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
}