2012-07-14 1 views
1

iPad 용으로 훌륭하게 작동하는 마스터 디테일 앱이 있습니다. 그러나 iPad 버전의 DetailViewController으로 전송되는 변수가 iPhone DetailViewController으로 전송되지 않기 때문에 iPhone 버전이 작동하지 않습니다. 나는 MasterViewController 구현 한 줄의 코드로이 문제를 해결할 수 있습니다사용자가 iPhone과 iPad에있을 때만 코드 블록을 실행할 수 있습니까?

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    self.detailViewController=segue.destinationViewController; 
} 

불행하게도, 내가 그 코드를 구현할 때, 아이 패드 버전은 작동을 멈 춥니 다. 다른보기 컨트롤러 (HomeViewController)에서 다시 DetailViewController으로 이동하면 예외가 발생합니다. 그 오류 로그는 다음과 같습니다

2012-07-14 14:29:12.924 46 Tracker[2772:11603] -[HomeViewController setDetailItem:]: unrecognized selector sent to instance 0x7cad4f0 
2012-07-14 14:29:12.925 46 Tracker[2772:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[HomeViewController setDetailItem:]: unrecognized selector sent to instance 0x7cad4f0' 
*** First throw call stack: 
(0x148a022 0x201acd6 0x148bcbd 0x13f0ed0 0x13f0cb2 0x2cb0 0x2d75c5 0x2d77fa 0xb6c85d 0x145e936 0x145e3d7 0x13c1790 0x13c0d84 0x13c0c9b 0x16a07d8 0x16a088a 0x246626 0x1fdd 0x1f45) 
terminate called throwing an exception(lldb) 

따라서, 사용자가 아이폰에 경우에만 나는 코드의 첫 번째 블록을 실행할 수있는 방법은 무엇입니까? 또는 두 장치 모두에서 제대로 작동하도록 코드를 수정할 수 있습니까?

여기 내 iPad 스토리 보드에 대한 링크가 있습니다 (희망적으로) 더 명확하게 만들 수 있습니다. HomeViewController에서 DetailViewController으로 이동 한 후 표 셀을 클릭하면 문제가 발생합니다. http://www.grapekeeper.com/storyboards.png

답변

4

아마도 다음 중 하나가 될 수 있습니다.

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    // perform iPad logic 
} else { 
    // perform iPhone logic 
} 
+0

매력처럼 작동합니다! 엄청 고마워! – lemontwist

관련 문제