ios - 将披露指示器添加到 map 引脚 iOS 5
<p><p>我似乎无法在我的 map 注释中添加披露按钮。</p>
<p>我也为我的 ViewController 实现了 MKMapViewDelegate。我错过了什么?</p>
<pre><code>- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation
{
MKPinAnnotationView *mapPin = nil;
if(annotation != map.userLocation)
{
static NSString *defaultPinID = @"defaultPin";
mapPin = (MKPinAnnotationView *);
if (mapPin == nil )
mapPin = [ initWithAnnotation:annotation reuseIdentifier:defaultPinID];
mapPin.canShowCallout = YES;
UIButton *infoButton = ;
mapPin.rightCalloutAccessoryView = infoButton;
}
return mapPin;
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>该代码应该可以工作,但请检查以下内容:</p>
<ul>
<li>是否设置了 mapView 的 <code>delegate</code> 属性?声明 ViewController 实现 <code>MKMapViewDelegate</code> 协议(protocol)实际上并没有告诉 mapView 哪个对象正在实现委托(delegate)方法。在代码中,执行 <code>map.delegate = self;</code> 或在 IB 中将 <code>delegate</code> 导出连接到文件的所有者。</li>
<li>注释的 <code>title</code> 属性是否设置为非空白?如果 <code>title</code> 为空白,则不会显示标注。</li>
</ul>
<p>同样,不相关,但是,当 dequeue 返回注解 View 时,您应该将其 <code>annotation</code> 属性更新为当前注解(它之前可能已用于另一个注解)。此外,除非您使用 ARC,否则您还应该 <code>autorelease</code>View 。</p>
<pre><code>- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation
{
MKPinAnnotationView *mapPin = nil;
if(annotation != map.userLocation)
{
static NSString *defaultPinID = @"defaultPin";
mapPin = (MKPinAnnotationView *);
if (mapPin == nil )
{
mapPin = [[ initWithAnnotation:annotation
reuseIdentifier:defaultPinID] autorelease];
mapPin.canShowCallout = YES;
UIButton *infoButton = ;
mapPin.rightCalloutAccessoryView = infoButton;
}
else
mapPin.annotation = annotation;
}
return mapPin;
}
</code></pre></p>
<p style="font-size: 20px;">关于ios - 将披露指示器添加到 map 引脚 iOS 5,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/8330638/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/8330638/
</a>
</p>
页:
[1]