1

ページカール機能を備えたマップビューを作成しました。マップビューには、ページ カール ボタンを備えたツールバーがあります。ボタンをクリックすると、マップビュー ページがカールします。これがコードです。

-(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];
}

マップビュー ページがカールすると、その下に新しいビュー コントローラーがあります。新しいView Controllerには、3つのセグメントを持つセグメント化されたコントロールがあります。

- (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 では動作しません。何が問題なのかわかりません。助けが必要です。

4

2 に答える 2

0

アプリの起動時にXcodeコンソールを見ると、次のようなメッセージが表示されますか?

アプリケーションは、アプリケーションの起動時にルートビューコントローラーを備えている必要があります

もしそうなら、あなたの問題は、iOS6用にルートビューコントローラーを設定する必要がある方法の変更が原因である可能性があります。

問題に対処する方法については、こちらをご覧ください。

于 2012-10-10T10:29:03.347 に答える
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;
  }

}

現在、これを複数のView Controllerで使用しようとはしていないため、これは1つのView Controllerでのみ機能する可能性があります。iOS でプログラミングを始めたばかりなので、ご容赦ください。ページ カール効果をアプリに追加しようとしていますが、これまでのところ、地図ビューと、押すとユーザーの場所にズームインするボタンとユーザーはマップ タイプを変更できます。

PSこれは、「トグル」という名前の値変更アクションとして設定されたセグメント化されたコントロールです...

于 2013-02-27T08:31:03.610 に答える