2013-11-11 4 views
0

У меня есть приложение, которое отображает местоположения на карте. Я хочу передать данные с 1-го представления (MapViewController) в другое представление (locationDetailViewController)Передача данных в другой контроллер просмотра при нажатии на аннотацию

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

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
{PlaceDetailViewController *det=[[PlaceDetailViewController alloc]init]; 
det.PlaceDetailMutableArray=PlaceMutableArray; 
[self performSegueWithIdentifier:@"DetailView" sender:view];} 

заранее спасибо

ответ

1

Попробуйте это:

На вашем SecondViewController.m, добавьте метод (Дон» забудьте объявить его на SecondViewController.h тоже):

-(void)setValue:(NSMutableArray*)array 
{ 
NSMutableArray *PlaceDetailMutableArray = [[NSMutableArray alloc] init]; 
PlaceDetailMutableArray = array; 
} 

И на первом ViewController, добавьте код ниже:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
if ([segue.identifier isEqualToString:@"DetailView"]) { 
PlaceDetailViewController *det= segue.destinationViewController; 
[det setValue: PlaceMutableArray]; 
} 
} 

Наконец, измените код вашего примера для:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view  calloutAccessoryControlTapped:(UIControl *)control 
{ 
[self performSegueWithIdentifier:@"DetailView" sender:view]; 
} 
+0

Этот код неверен. Пожалуйста, исправьте это. –

+0

Ох ... по методу prepareForsegue, строка [det setValue: det.PlaceDetailMutableArray]; должен быть: [det setValue: PlaceMutableArray]; – scollaco

+0

'- (void) setValue: (NSMutableArray *) array' также неверен. Он ничего не делает. –

Смежные вопросы