[英]Drop Pin on current location
我正在構建一個iOS應用,需要能夠將別針放置在用戶當前所在的位置! 由於某種原因,我一直都在苦苦掙扎! 我嘗試了以下代碼,但遇到了錯誤。
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
if (annotation == mapView.userLocation)
{
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil];
annView.pinColor = MKPinAnnotationColorRed;
annView.animatesDrop=TRUE;
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
return annView;
[annView release];
}
}
錯誤是:控件可能達到非空函數的結尾。
非常感謝你的幫助! 贊賞!
以下代碼在Xcode iPhone模擬器中可以正常運行:
#import "ViewController.h"
@import MapKit;
@interface ViewController () <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self.mapView setDelegate:self];
[self.mapView setShowsUserLocation:YES];
}
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
// zoom to region containing the user location
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800);
[self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES];
// add the annotation
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
point.coordinate = userLocation.coordinate;
point.title = @"The Location";
point.subtitle = @"Sub-title";
[self.mapView addAnnotation:point];
}
@end
當方法具有返回類型時,則必須在所有條件下返回某些內容,而您只在if分支中返回某些內容,否則返回其他內容。 當if語句的計算結果為false時,編譯器還要求您返回某些內容-這就是您收到編譯錯誤的原因。
順便說一句
[annView release];
永遠不會被執行,因為您要在那之前返回。 但是,為什么有這個原因呢? 即嘗試使用非ARC代碼? 您是否從某處復制了這一行(這是舊代碼)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.