استدعاء سيتكورديناتي على مكبلاسيمارك تعطل التطبيق مع 'محدد غير معروف'
-
10-12-2019 - |
سؤال
لدي مكمابفيو أنا إضافة مكبلاسيمارك واحد لتمثيل موقع مبنى المستخدم قد حددت للتو.يمكن للمستخدم تحديد مبنى واحد فقط في كل مرة ، وأريد ببساطة نقل العلامة الموضعية إلى المبنى الجديد عند اختيار مبنى جديد.في المبنى الأول الذي يختارونه ، يعمل بشكل جيد ويضع دبوسا على الخريطة.عندما أحاول الاتصال setCoordinate
على علامة موضعية لتحديث موقف علامة عند اختيار مبنى جديد على الرغم من ، أحصل على -[MKPlacemark setCoordinate:]: unrecognized selector sent to instance
في ميفيوكونترولر.ح لدي:
@property (nonatomic, strong)MKPlacemark *selectedBuildingPlacemark;
في ميفيوكونترولر.m
@synthesize selectedBuildingPlacemark;
...
if (self.selectedBuildingPlacemark == nil) {
self.selectedBuildingPlacemark = [[MKPlacemark alloc] initWithCoordinate:myCoord addressDictionary:nil];
[mapView addAnnotation:self.selectedBuildingPlacemark];
}
else {
[self.selectedBuildingPlacemark setCoordinate:myCoord];
}
اعتقدت مكبلاسمارك يتوافق مع مكانوتاتيون وبالتالي ينبغي تنفيذ setCoordinate
.يمكن للشخص أن تظهر لي الخطأ من طرقي?
المحلول
وثائق MKAnnotation
يقول:
يجب أن تنفذ التعليقات التوضيحية التي تدعم السحب هذه الطريقة لتحديث موضع التعليق التوضيحي.
لذا فإن الطريقة setCoordinate:
اختياري ويتم تنفيذه فقط بواسطة الفئات التي تدعم السحب.وثائق MKPlacemark
لا يشير إلى هذه الطريقة ، لذلك لم يتم تنفيذها.
لذلك يجب عليك إنشاء مثيل جديد في كل مرة تقوم فيها بتحديد مبنى جديد.
نصائح أخرى
إذا كنت لا تحتاج على وجه التحديد إلى استخدام MKPlacemark
(أنها لا تبدو وكأنها لأنك تمرير لا شيء ل أدركديكتيوناري) ، هل يمكن استخدام MKPointAnnotation
الطبقة بدلا من ذلك.
MKPointAnnotation
الأدوات MKAnnotation
ولكن يضيف setCoordinate
الطريقة.