3

私はこの問題について本当に混乱しています。最近、アプリケーションのマップビュー タブで問題が発生しています。もう一度やり直すところまで。この問題を抱えているのは私だけなのか、それともここで何か間違ったことをしているのだろうかと思っています。

私はiOSにかなり慣れていませんが、ユーザーの位置を中心にするためにマップビューの中心と範囲を定義する方法を知っています.

これを独自のビューで作成しましたが、動作しているように見えますが、タブ コントローラーに配置すると...問題が発生します。ユーザーの位置を表示している間、マップはズームアウトされたままになります。ユーザーの現在地がズームインされて表示されるはずです。

私のMapViewController:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.mapView.delegate self];
    [self.mapView setShowsUserLocation:YES];
    // Do any additional setup after loading the view from its nib.
}

-(void)mapView:(MKMapView *)mapView
didUpdateUserLocation:(MKUserLocation *)userLocation
{
    CLLocationCoordinate2D loc = [userLocation coordinate];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 500, 500);
    [self.mapView setRegion:region animated:YES];
}

また、デリゲートでタブ コントローラーを作成した方法と関係があるのではないかと考えました。

私のアプリのデリゲート:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *viewController1 = [[NWSWelcomeViewController alloc] initWithNibName:@"NWSWelcomeViewController" bundle:nil];
    UIViewController *viewController2 = [[NWSMapViewViewController alloc] initWithNibName:@"NWSMapViewViewController" bundle:nil];
  //  UIViewController *viewController3 = [[NWSSettingsViewController alloc] initWithNibName:@"NWSSettingsViewController" bundle:nil];
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = @[viewController1, viewController2, /* viewController3 */];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

私は iOS 5.1 用に書いており、最新の Xcode を使用しています。

はい、mapView でズームの設定を有効にしています。

ユーザーの場所を取得して、マップビューをユーザーの場所にズームインしたいだけです。

4

2 に答える 2

2

のこの行viewDidLoad:

[self.mapView.delegate self];

何もしません (メッセージselfをに送信しようとしていますself.mapView.delegate)。

実際にはマップビューを設定しないdelegateため、didUpdateUserLocation呼び出されることはありません。

あなたがおそらく意味していたのは:

[self.mapView setDelegate:self];

またはこれ:

self.mapView.delegate = self;
于 2012-08-27T17:54:45.587 に答える
1

この種の問題は、絵コンテでも解決できます。ストーリーボード -> コントローラー -> mapView に移動します mapView を右クリックすると、ポップオーバーが表示され、ポイント デリゲートがデリゲート + ポイントをコントローラーにドラッグするマップビューを右クリック![][1]

于 2014-11-05T13:39:04.333 に答える