2012-10-10 3 views
1

페이지 컬 기능이있는 mapview를 만들었습니다. 지도 뷰에는 툴바가 있고 페이지 컬 버튼이 있습니다. 버튼을 클릭하면지도보기 페이지가 말 릅니다. 여기에 코드가 있습니다.UISegmentedControl click 이벤트가 IOS 6에서 작동하지 않습니다.

-(IBAction) onPageCurl:(id)sender{ 

pageCurlViewController = [[MyMapViewPageCurlViewController alloc] initWithNibName:@"MyMapViewPageCurlViewController" bundle:nil]; 
[pageCurlViewController.navigationController.toolbar setHidden:NO]; 
[pageCurlViewController setModalTransitionStyle:UIModalTransitionStylePartialCurl]; 
[pageCurlViewController setToolbarItems:toolbarItems]; 
[[self navigationController] presentModalViewController:pageCurlViewController animated:YES]; 

[pageCurlViewController getMapView:&mapView]; 
[pageCurlViewController release]; 
} 

지도보기 페이지가 구부러 지므로 그 아래에 새로운 viewcontroller가 있습니다. 새 뷰 컨트롤러에는 세 개의 세그먼트가있는 세그먼트 컨트롤이 있습니다.

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view from its nib. 

[self.navigationController.toolbar setHidden:NO]; 
[directionSearchSegmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged]; 
directionSearchSegmentedControl.selectedSegmentIndex = selectedIndex; 
UIBarButtonItem *directionSearchSegmentedControlButton = [[[UIBarButtonItem alloc] initWithCustomView:directionSearchSegmentedControl] autorelease]; 

NSArray *toolbarItems = [NSArray arrayWithObjects: navigatorButton , flexibleSpace, directionSearchSegmentedControlButton, flexibleSpace, pageCurlButton, nil]; 
[self setToolbarItems:toolbarItems]; 
[self.navigationController.toolbar setHidden:NO]; 


} 

나는 세그먼트 컨트롤러의 각 부분을 클릭에지도의 표준/위성/하이브리드 볼 수 있습니다.

- (void)segmentAction:(id)sender 
{ 
[self dismissModalViewControllerAnimated:YES]; 
    if([sender selectedSegmentIndex] == 0){ 
     selectedIndex = 0; 
     pageCurlMapView.mapType = MKMapTypeStandard; 
    } 
    if([sender selectedSegmentIndex] == 1){ 
     selectedIndex = 1; 
     pageCurlMapView.mapType = MKMapTypeSatellite; 
    } 
    if([sender selectedSegmentIndex] == 2){ 
     selectedIndex = 2; 
     pageCurlMapView.mapType = MKMapTypeHybrid; 
    } 
    if([sender selectedSegmentIndex] == 2){ 

    } 
directionSearchSegmentedControl.momentary = YES; 
selectedIndex = directionSearchSegmentedControl.selectedSegmentIndex; 
} 

페이지 넘김 기능이 정상적으로 작동합니다. 앞에서 언급했듯이 페이지가 휘어서 새 뷰에서 분할 컨트롤이 있습니다. 그러나 세그먼트 화 된 컨트롤은 IOS 6에서 제대로 작동하지 않습니다. 디버깅하고 확인했습니다. 세그먼트를 클릭하면 컨트롤에서 이벤트 메서드를 입력하지 않습니다. 이전 버전의 IOS에서는 여전히 작동하지만 IOS 6에서는 작동하지 않습니다. 무엇이 잘못 되었나요? 도움이 필요하다.

답변

0

응용 프로그램 출시, 당신은이 같은 메시지를 표시 할 때 엑스 코드 콘솔을 보면 :

응용 프로그램은 응용 프로그램 실행의 끝에서 루트 뷰 컨트롤러가 예상된다

하는 경우 그러면 문제는 iOS 6에서 루트보기 컨트롤러를 설정해야하는 경우 변경 될 수 있습니다.

문제를 해결하는 방법에 대한 정보는 here을 참조하십시오.

0

죄송합니다. 다소 늦었지만 내 앱에서 비슷한 작업을하고 있습니다. 솔직히,지도 유형을 변경하기 위해 간단한 전환 방법을 사용했습니다. 코드는 다음과 같습니다.

- (IBAction)toggle:(id)sender { 

switch ([sender selectedSegmentIndex]) { 
    case 0: 
    { 
     [self.mapView setMapType:MKMapTypeStandard]; 
    }break; 
    case 1: 
    { 
     [self.mapView setMapType:MKMapTypeHybrid]; 
    }break; 
    case 2: 
    { 
     [self.mapView setMapType:MKMapTypeSatellite]; 
    }break; 
    } 

} 

이제는 하나의보기 컨트롤러에서만 작동 할 수 있도록 여러보기 컨트롤러에서이 기능을 사용하지 않았습니다. 방금 iOS에서 프로그래밍을 시작 했으므로 나와 함께 감당할 수 있습니다. 앱에 페이지 컬 효과를 추가하려고합니다. 그러나 지금까지지도보기와 버튼이 있습니다. 푸시 버튼을 누르면 사용자 위치가 확대되고 사용자는지도 유형을 변경할 수 있습니다.

PS 이것은 세분화 된 컨트롤이 "변경"이라는 값 변경 작업으로 설정되어있는 경우 유용합니다 ...

관련 문제