ลบตัวเลือกปุ่มข้อมูลออกจากชื่อคำอธิบายประกอบแผนที่

พรีมเบิล

ฉันได้ติดตั้งคำอธิบายประกอบแผนที่โดยใช้ MKMapView และ MapAnnotation เมื่อแตะมุมมองชื่อเรื่องจะปรากฏดังที่ปรากฎในภาพต่อไปนี้

ชื่อคำอธิบายประกอบแผนที่

ฉันได้ใช้ LOC ต่อไปนี้เพื่อใช้คำอธิบายประกอบแผนที่ดังกล่าว:

// VENUE 1 PIN.

CLLocationCoordinate2D venue1Location = CLLocationCoordinate2DMake(-27.5, 153.5);

MapAnnotation *venue1Pin = [[MapAnnotation alloc] initWithTitle:@"1 ONE ST" Location:venue1Location];

ดูวิธีการมอบสิทธิ์คำอธิบายประกอบ:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MapAnnotation class]])
{
    MapAnnotation *venueLocationAnnotation = (MapAnnotation *)annotation;

    MKAnnotationView *venueLocationAnnotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"customAnnotation"];

    venueLocationAnnotationView.rightCalloutAccessoryView.hidden = YES;

    if (venueLocationAnnotationView == nil)

        venueLocationAnnotationView = venueLocationAnnotation.annotationView;

    else

        venueLocationAnnotationView.annotation = annotation;


        return venueLocationAnnotationView;

}
else
{
    return nil;
}

}

คำถาม

ฉันจะลบปุ่มข้อมูลออกจากมุมมองชื่อคำอธิบายประกอบแผนที่ดังกล่าวได้อย่างไร


person arman    schedule 19.02.2015    source แหล่งที่มา
comment
โปรดแสดงวิธีการมอบสิทธิ์ viewForAnnotation ของคุณ   -  person    schedule 19.02.2015
comment
โปรดดูด้านบน @Anna   -  person arman    schedule 19.02.2015
comment
ฉันได้ติดตั้ง placeLocationAnnotationView.rightCalloutAccessoryView.hidden = YES; วิธีการในวิธีการมอบหมายและคลาสคำอธิบายประกอบที่กำหนดเอง   -  person arman    schedule 19.02.2015
comment
ในคลาส MapAnnotation ดูเหมือนว่าคุณจะมีเมธอดชื่อ annotationView ในวิธีการนั้น คุณจะต้องตั้งค่า rightCalloutAccessoryView ซึ่งจะยกเลิกเอฟเฟกต์ (ถ้ามี) ของบรรทัดที่ซ่อน = YES ซึ่งมา ก่อน มุมมองจะถูกตั้งค่า   -  person    schedule 19.02.2015
comment
ขอบคุณสำหรับคำแนะนำ. ฉันเพิ่มอันอื่นที่ซ่อน = YES ให้กับแต่ละ if / else สิ้นสุดวิธีการมอบสิทธิ์ และปุ่มก็หายไปในที่สุด มีความคิดใดที่จะจัดข้อความชื่อเรื่องให้อยู่ตรงกลาง? @แอนนา   -  person arman    schedule 19.02.2015
comment
หากคุณตั้งค่าเป็นศูนย์แทน ชื่อควรอยู่ตรงกลางอย่างเหมาะสม การตั้งค่าเป็นซ่อนจะยังคงเหลือพื้นที่สำหรับมุมมองที่ซ่อนอยู่ แต่ทำไมไม่แก้ไขเมธอด annotationView เองและไม่ตั้งค่า rCAV ตั้งแต่แรกล่ะ   -  person    schedule 19.02.2015


คำตอบ (3)


คุณสามารถใช้คำสั่งต่อไปนี้:

คุณต้องใช้วิธีมอบหมายต่อไปนี้สำหรับสิ่งนี้:

 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
         ...
         venue1Pin.rightCalloutAccessoryView = nil;
         ...
    }
person Yuvrajsinh    schedule 19.02.2015
comment
ฉันได้ปฏิบัติตามข้อเสนอแนะของคุณแล้ว ปุ่ม i ไม่หายไป - person arman; 19.02.2015
comment
@arman คุณได้ใช้ viewForAnnotation: วิธีการมอบหมายหรือไม่ - person Yuvrajsinh; 19.02.2015
comment
ใช่. ฉันได้ติดตั้ง MKMapView และตั้งค่า LOC ที่เกี่ยวข้องทั้งหมด มุมมองคำอธิบายประกอบแผนที่ได้รับการตั้งค่าจากคลาสที่กำหนดเองซึ่งมีรูปภาพ ฯลฯ รูปภาพ / ชื่อจะเปลี่ยนไปตามอินพุตต่างๆ ที่ฉันทำ - person arman; 19.02.2015
comment
ในโค้ดของ OP place1Pin คือออบเจ็กต์โมเดลคำอธิบายประกอบ ไม่ใช่มุมมอง คุณสมบัติ rightCalloutAccessoryView อยู่บนออบเจ็กต์มุมมองคำอธิบายประกอบ ไม่ใช่โมเดล - person ; 19.02.2015

person    schedule
comment
ฉันได้ปฏิบัติตามข้อเสนอแนะของคุณแล้ว ปุ่ม i ไม่หายไป - person arman; 19.02.2015
comment
ตามค่าเริ่มต้น rightCalloutAccessoryView จะเป็นศูนย์เมื่อมีการสร้าง MKPinAnnotationView ใหม่ ดังนั้นการตั้งค่าคุณสมบัติที่ซ่อนไว้จึงไม่ทำอะไรเลย (เนื่องจาก rCAV เป็นศูนย์) วิธีเดียวที่ปุ่มจะแสดงคือถ้า OP กำลังตั้งค่า rCAV เป็นบางอย่างซึ่งในกรณีนี้พวกเขาไม่ควรตั้งค่าให้เริ่มต้นด้วย - person ; 19.02.2015

person    schedule
comment
ฉันได้ปฏิบัติตามข้อเสนอแนะของคุณแล้ว ปุ่ม i ไม่หายไป - person arman; 19.02.2015
comment
ตามค่าเริ่มต้น rightCalloutAccessoryView จะเป็นศูนย์เมื่อมีการสร้าง MKPinAnnotationView ใหม่ ดังนั้นการตั้งค่าคุณสมบัติที่ซ่อนไว้จึงไม่ทำอะไรเลย (เนื่องจาก rCAV เป็นศูนย์) นอกจากนี้ โค้ดภายในบล็อก if (!pinView) จะไม่ทำอะไรเลย เนื่องจากบล็อกนั้นจะถูกดำเนินการเฉพาะในกรณีที่ pinView เป็นศูนย์ (และการตั้งค่าคุณสมบัติบนวัตถุศูนย์จะไม่มีผลใดๆ) - person ; 19.02.2015