Я новичок в разработке xcode и iPhone, и мне интересно, можно ли взять стандартную выноску карты с одной строкой текста с кнопкой в крайнем правом углу и удвоить это в одной выноске. Итак, это один пузырь с выноской двойной высоты с двумя строками текста друг над другом, каждая с кнопкой в правом крайнем углу. Фактически, я бы хотел, чтобы первый переходил на страницу с подробностями, а второй предлагал направления к аннотации. Есть ли способ сделать настраиваемую выноску, как описано, не слишком усложняя ее?
2 линии и кнопки в одной выноске карты iPhone
comment
Вы хотите нажать на булавку, она должна показать вид аннотации с одной линией и кнопкой в крайнем правом углу, а при повторном нажатии на крайнюю правую кнопку вид аннотации должен перезагрузиться, чтобы отобразить детали?
- person iMOBDEV   schedule 06.07.2011
comment
Я хочу, чтобы при первом прикосновении к аннотации отображалась выноска с двумя линиями и кнопками.
- person Ryan   schedule 06.07.2011
Ответы (2)
Посетите Блог асинхронных решений для реализации замены выноски, хотя это может потребовать больше работы, чем вы ожидаете. Я не думаю, что есть простой легкий способ делать то, что вы хотите.
person
Rayfleck
schedule
06.07.2011
Хотя это намного больше работы, чем я хочу (или я способен сделать), это похоже на лучший ответ и, возможно, единственный способ сделать что-то подобное. Спасибо.
- person Ryan; 27.07.2011
Вы можете реализовать метод делегата viewForAnnotation, как показано ниже
- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation{
MKAnnotationView *view = nil;
if(annotation !=mapView.userLocation){
view = (MKAnnotationView *)
[mapView dequeueReusableAnnotationViewWithIdentifier:@"identifier"];
if(nil == view) {
view = [[[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:@"identifier"]
autorelease];
}
//Custom class for showing title and subtitle
ParkPlaceMark *currPlaceMark = annotation;
view.image = [UIImage imageNamed:@"pin.png"];
//Button at far right corner.
UIButton *btnViewVenue = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
view.rightCalloutAccessoryView=btnViewVenue;
view.enabled = YES;
view.canShowCallout = YES;
view.multipleTouchEnabled = NO;
}
return view;
}
Пользовательский класс для аннотации, как показано ниже
@interface ParkPlaceMark : NSObject<MKAnnotation> {
CLLocationCoordinate2D coordinate;
NSString *m_title;
NSString *m_subTitle;
int position;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, readwrite) int position;
-(id)initWithCoordinate:(CLLocationCoordinate2D) coordinate;
- (NSString *)subtitle;
- (NSString *)title;
- (void)setTitle:(NSString *)title;
- (void)setSubTitle:(NSString *)subtitle;
@end
Реализация пользовательского класса аннотации
@implementation ParkPlaceMark
@synthesize coordinate;
@synthesize position;
- (NSString *)subtitle{
return m_subTitle;
}
- (NSString *)title{
return m_title;
}
- (void)setTitle:(NSString *)title{
m_title = title;
}
- (void)setSubTitle:(NSString *)subtitle{
m_subTitle = subtitle;
}
-(id)initWithCoordinate:(CLLocationCoordinate2D) c{
coordinate=c;
NSLog(@"%f,%f",c.latitude,c.longitude);
return self;
}
@end
person
iMOBDEV
schedule
06.07.2011
Думаю, вы упустили суть вопроса. Мне нужны две строки текста и две кнопки, расположенные одна над другой, внутри выноски, которая показывает, когда нажимают на булавку.
- person Ryan; 06.07.2011
попробуйте взять 1 вид аннотации в качестве основного и добавить 2 вида аннотации в качестве подвидов этого основного вида аннотации
- person iMOBDEV; 06.07.2011