1

更新:提案したリンクを試しましたが、機能させることができません。

私がそれを正しく理解していることを確認するために、これらは私が取ったステップです。

最初のビューコントローラーはFirstViewControllerと呼ばれ、2番目はSearchViewControllerと呼ばれます。

  1. SearchViewControllerをFirstViewControllerにインポートし、追加します
  2. FirstViewController.mに、以下を追加します。SearchViewController * svc = [[SearchViewController alloc] init]; svc.delegate = self;

  3. SearchViewController.hに次を追加しました:

    @protocol SearchViewControllerDelegate

    • (void)setLat:(CLLocationDegrees)lat setLon:(CLLocationDegrees)lon;

デリゲートプロパティと同様に:

@property (assign) id <SearchViewControllerDelegate> delegate;
  1. SearchViewController.mでデリゲートを合成し、[self.delegate setLat:51.0000 setLon:-0.10000]を追加しました。

一部のNSLogテストから、メソッドsetLatSetLonメソッド自体が呼び出されることはないようです。

私は現在、大学のiPadアプリケーションを完成させようとしています。それの目的は、注釈とMKPolygonsのオーバーレイでキャンパスのライブグーグル/アップルマップビューを提供することです。これはすべて正常に機能します。

ポップオーバー(2番目のビューコントローラー)にキャンパスの建物のテーブル(座標が格納されているCampusBuildingのオブジェクト)と検索ボックスをロードするボタンを追加しました。これはすべて問題ありません。 。私が探しているのは、ユーザーが行を選択すると、マップビューがその特定の建物の中心にくるということです。マップビューコントローラ自体から参照すると正常に機能するメソッドを以下に記述しました。

しかし、2番目のView Controllerからこれをどのように行うのでしょうか?

最初のViewControllerにあるメソッドは次のとおりです。

- (void)setLat:(CLLocationDegrees)lat setLon:(CLLocationDegrees) lon{

MKCoordinateSpan span;
span.latitudeDelta = (double) .003;
span.longitudeDelta = (double).003;
//Define the default region to focus on
MKCoordinateRegion region;
region.span=span;
region.center=CLLocationCoordinate2DMake
(lat,lon);
//set the default region to 'region'
[_mapView setRegion: region animated:YES];
[_mapView regionThatFits:region];

}

2番目のViewControllerでは、TableViewControllerとして正常に機能します。ユーザーが行を選択すると、新しいビューが読み込まれるように設定しました。また、最初のView Controllerのオブジェクトを開始しようとし、次のように記述しました。FirstViewController * firstVC;

    [firstVC setLat:building.latValue setLon:building.lonValue];

すべてコンパイルされますが、移動は発生しません。現在アクティブなオブジェクトを参照するのではなく、新しいオブジェクトを開始しているためだと思います。

これを行う方法はありますか?コードを改善する方法についてのコメントはいつでも歓迎です。私はこれに比較的慣れていません。

ありがとう

4

1 に答える 1

1

あなたは、firstVCがFirstViewControllerの新しいインスタンスになるということは正しかった。前のものではありません。

必要なのは、Objective-Cのデリゲートパターンを使用することです。これは、このシナリオで一般的に使用されます。これは、実装方法に関するサンプルコードを含む以前のSO回答からの2つの例です。

view2にポップしたときにタイマーを再開する方法

ObjectiveCの別のクラスからメソッドを呼び出す

于 2012-07-21T15:22:59.023 に答える