2 линии и кнопки в одной выноске карты iPhone

Я новичок в разработке xcode и iPhone, и мне интересно, можно ли взять стандартную выноску карты с одной строкой текста с кнопкой в ​​крайнем правом углу и удвоить это в одной выноске. Итак, это один пузырь с выноской двойной высоты с двумя строками текста друг над другом, каждая с кнопкой в ​​правом крайнем углу. Фактически, я бы хотел, чтобы первый переходил на страницу с подробностями, а второй предлагал направления к аннотации. Есть ли способ сделать настраиваемую выноску, как описано, не слишком усложняя ее?


person Ryan    schedule 06.07.2011    source источник
comment
Вы хотите нажать на булавку, она должна показать вид аннотации с одной линией и кнопкой в ​​крайнем правом углу, а при повторном нажатии на крайнюю правую кнопку вид аннотации должен перезагрузиться, чтобы отобразить детали?   -  person iMOBDEV    schedule 06.07.2011
comment
Я хочу, чтобы при первом прикосновении к аннотации отображалась выноска с двумя линиями и кнопками.   -  person Ryan    schedule 06.07.2011


Ответы (2)


Посетите Блог асинхронных решений для реализации замены выноски, хотя это может потребовать больше работы, чем вы ожидаете. Я не думаю, что есть простой легкий способ делать то, что вы хотите.

person Rayfleck    schedule 06.07.2011
comment
Хотя это намного больше работы, чем я хочу (или я способен сделать), это похоже на лучший ответ и, возможно, единственный способ сделать что-то подобное. Спасибо. - 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
comment
Думаю, вы упустили суть вопроса. Мне нужны две строки текста и две кнопки, расположенные одна над другой, внутри выноски, которая показывает, когда нажимают на булавку. - person Ryan; 06.07.2011
comment
попробуйте взять 1 вид аннотации в качестве основного и добавить 2 вида аннотации в качестве подвидов этого основного вида аннотации - person iMOBDEV; 06.07.2011