0

次のようなアクションはありますか?

if (previous_view.title = @"newyork")
{
mapPin.pinColor = MKPinAnnotationColorGreen;
}

if (previous_view.title = @"washington")
{
mapPin.pinColor = MKPinAnnotationColorPurple;
}

マップがあるアプリを作成しています。ピンの注釈をクリックすると、ボタン マップのある画面が表示されます。それをクリックすると、ピンを別の色に変更する必要があります。前のビューの名前またはその他の属性 (どこから来たのか) に基づくようなアクションがあるかどうか疑問に思っています。

注釈を押した後に次の画面に移動するために使用するコードは次のとおりです。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
if ([view.annotation.title isEqual: @"New York"])
    {
    newyork *controller1 = [[[newyork alloc] initWithNibName:@"newyork" bundle:nil] autorelease];
    controller1.delegate = self;
    controller1.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:controller1 animated:YES completion:nil];
    }
}

これは newyork.m ファイル内のコードで、マップ ボタンが押されたときに発生するアクションです。

- (IBAction)mapPressed:(id)sender
{
map *controller1 = [[[map alloc] initWithNibName:@"map" bundle:nil] autorelease];
controller1.delegate = self;
controller1.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:controller1 animated:YES completion:nil];
}

これについて本当に助けが必要です!! どんな助けでも大歓迎です。

4

2 に答える 2

3

「ビュー」とは「ビューコントローラー」を意味すると思います。

その仮定の後。はい、UINavigationController を使用しており、そのナビゲーション コントローラーにビュー コントローラーをプッシュしている場合は、これを確認できます。そうするために:

UIViewController *previousController = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count - 2];

if ([previousController.title isEqual:@"something"]) {
    // Do Something
}

しかし、これは推奨されるアプローチではありません。ビュー コントローラーでの条件付きアクションについては、ナビゲーション コントローラー スタックに依存しないでください。できれば初期化時に、このパラメータをView Controllerに渡す必要があります。お気に入り:

[[SomeViewContoller alloc] initWithStateName:stateName];
于 2013-05-23T16:43:51.743 に答える
1

MKAnnotationViewクラスリファレンス

注釈ビューは、ビューが選択されていないか、選択されているか、または選択されていて標準の吹き出しビューを表示しているかを決定する、選択状態の概念をサポートしています。ユーザーは、注釈ビューを操作して選択状態を切り替えます。選択されていない状態では、注釈ビューは表示されますが、強調表示されません。選択状態では、注釈は強調表示されますが、吹き出しは表示されません。最後に、ハイライトと吹き出しの両方で注釈を表示できます。吹き出しビューには、タイトル文字列や詳細情報を表示するためのコントロールなどの追加情報が表示されます。タイトル情報は注釈オブジェクトによって提供されますが、注釈ビューはカスタム コントロールを提供する責任があります。詳細については、サブクラス化に関する注意事項を参照してください。

したがって、できることは、サブクラス化してメソッドMKAnnotationViewをオーバーライドする-(void)setSelected:animated:ことです。

于 2013-05-23T16:47:39.160 に答える