2014-09-29 5 views
3

xcode 6에서 Split View 프로젝트를 시작했으며 그 작업이 훌륭했습니다. 상자 밖에서 세로보기 모드에서 탐색보기 단추 (왼쪽 위)가있는 분할보기를 사용하여 마스터보기를 팝 아웃 할 수 있습니다.ios7 no displayModeButtonItem 또는 targetDisplayModeForActionInSplitViewController

주요 문제는 displayModeButtonItem 및 targetDisplayModeForActionInSplitViewController가 iOS8 인 경우에만 iOS7에서 작동하지 않는다는 것입니다.

iOS7에서 동일한 효과를 내고 작동하는 몇 가지 앱을 보았지만이를 수행하는 방법을 모릅니다. 누구든지 iOS7에서이를 달성 할 수있는 좋은 예나 해결 방법이 있습니까?

xcode는 iOS8에서만 작동하는 프로젝트를 만들었지 만 사과로 완전히 놀라지는 않는다고 생각합니다.

+0

을 http://stackoverflow.com/questions/16246519이 비슷한 질문이지만, 그것 (더 화살표 다시이없는 의미) 네비게이션 바에서 그 버튼을 넣어 TNO 도구 모음을 사용하여/uisplitviewcontroller-hide-unhide-storyboard의 마스터보기 – lostintranslation

답변

6

UISplitViewControllerDelegate에서 더 이상 사용되지 않는 콜백 기능을 사용하여을 iOS 7 플랫폼의 상세보기에 추가 및 제거 할 수 있습니다. 당신의 UISplitViewControllerDelegate에서 다음과 같이 구현 :

func splitViewController(svc: UISplitViewController, willHideViewController aViewController: UIViewController, withBarButtonItem barButtonItem: UIBarButtonItem, forPopoverController pc: UIPopoverController) { 
    if (!self.respondsToSelector(Selector("displayModeButtonItem"))) { 
     let navigationController = self.viewControllers.last as UINavigationController 
     let detailViewController: UIViewController? = navigationController.viewControllers?.last as? UIViewController 
     barButtonItem.image = UIImage(named: "IC_BackChevron") 
     detailViewController?.navigationItem.leftBarButtonItem = barButtonItem 
    } else { 
     // This callback function is depreciated in IOS8. We use displayModeButtonItem. 
    } 
} 

func splitViewController(svc: UISplitViewController!, willShowViewController aViewController: UIViewController!, invalidatingBarButtonItem barButtonItem: UIBarButtonItem!) { 
    if (!self.respondsToSelector(Selector("displayModeButtonItem"))) { 
     let navigationController = self.viewControllers.last as UINavigationController 
     let detailViewController: UIViewController? = navigationController.viewControllers?.last as? UIViewController 
     detailViewController?.navigationItem.leftBarButtonItem = nil 
    } else { 
     // This callback function is depreciated in IOS8. We use displayModeButtonItem. 
    } 
} 
+0

내 인생을 구했어 !!! – Sanandrea