2012-12-19 2 views
4

내지도 응용 프로그램에 스토리 보드를 사용하고 있습니다. Autolayout이 사용 중지 된 경우 MKMapview이 표시되지 않습니다. Autolayout을 사용하면 iPad(ios5)에 내 앱이 다운됩니다.Autolayout이 비활성화 된 경우 MKMapView가 표시되지 않습니다.

+0

MapView 프레임 워크를 포함 시켰습니까? (프로젝트 설정, 빌드 단계, 라이브러리와 바이너리 연결) –

+0

일부 코드를 게시하면 수행중인 작업을 볼 수 있습니다. 대부분 뭔가가'UIStoryboard'에 제대로 연결되지 않았으며,'Autolayout'은'MKMapView'에 대한 참조를 유지하고있었습니다. – msgambel

+0

@Dpk'.m' 파일에 그녀의 코드를 언급하고 있습니다. 문제의 원인이 될 수있는 잠재적 인 이유를 제시하고있었습니다. – msgambel

답변

2

자동 레이아웃은 IOS 6 기능입니다 - 그래서 당신이 (당신이 수행했다고 가정)에서 iOS 5에 대한 최소 요구 사항 설정 아이폰 OS (5)

를 실행 말한대로 그 이유 iPad에서 충돌 것 iOS5와 관련된 기능 만 사용하십시오. 앱은 여전히 ​​iOS 6 기기를 사용하는 사람들을 위해 실행됩니다 .-)

@msgambel과 (과) 유사한 코드를 게시 할 수 있다면 우리가 당신을 도울 수 있습니다. Storyboard와 관련된 문제가 있다고 판단되면 일부 스크린 샷을 게시하십시오.

+0

@Dpk - 환영합니다 :-) –

1

iOS 5를 지원하려면 스토리 보드 파일에서 Autolayout을 사용할 수 없습니다. iOS 5의 경우 모든 뷰 요소를 기존 방식으로 배치해야합니다. iOS 6에서 제약 조건을 사용하려면 코드에서 iOS 6에 대한 모든 제약 조건 설정을 수행 할 수 있습니다.

당신은

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 

및 iOS 6

를 확인하기 위해 다음과 같은 매크로를 사용할 수 있습니다 당신은 당신의 ViewController 설치하면 아이폰 OS 6

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) { 
    // code here 
} 

확인하고 뷰에 제약을 결합해야 할 때. 약간 tutorial to constraints here을 찾을 수 있습니다.

Storyboard 또는 xib 파일과 함께 Autolayout을 사용하려면 iOS 6 용 스토리 보드와 iOS 5 용 스토리 보드를 각각 iOS 6 용 및 iOS 5 용으로 만들어야합니다. iOS 6은 Autolayout 물론 iOS 5는 그렇지 않습니다. 뷰 설정을 마쳤 으면 iOS 버전을 확인하고 뷰의 올바른 스토리 보드 xib 파일을로드해야합니다. 스토리 보드를 들어

인스턴스화 코드는 다음과 같습니다

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) { 
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"iOS6Storyboard" bundle:nil]; 
    UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"]; 
    [self presentViewController:vc animated:YES completion:NULL]; 
} else { 
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"iOS5Storyboard" bundle:nil]; 
    UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"]; 
    [self presentViewController:vc animated:YES completion:NULL]; 
} 

모든에 대한 XIB를 사용하여이보기 :

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) { 
    ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewControlleriOS6" bundle:nil]; 
    [self.navigationController pushViewController:viewController animated:YES]; 
} else { 
    ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewControlleriOS5" bundle:nil]; 
    [self.navigationController pushViewController:viewController animated:YES]; 
} 

물론 XIB의의 ViewController는 스토리 보드의 ViewController뿐만 아니라 모달로 표시 할 수 있습니다 네비게이션 컨트롤러로 밀어 넣는다.

관련 문제