В конечном итоге мне удалось получить индекс для аннотации, нажатой на callOutAccecoryControlTapped-method. :) Я создал пользовательский класс аннотации под названием Annotation (Annnotation * ann), который я заполняю значениями из моего db на parse.com. Но теперь я не знаю, как передать значения на мой следующий вид LAOpeningHoursViewController? Я могу видеть все значения, когда я отлаживаю и * ann (se code) имеет, например: ann.cname = «Olles cafe» и т. Д. Так что это хорошо.Xcode: Передача объекта между двумя видами?
Я передаю весь объект ann на свой следующий вид. Но я не знаю, как получить, например, ann.cname, на мой «self.myLabel.text». Я покажу вам код:
Если у вас есть доброта, чтобы ответить мне, пожалуйста, объясните это очень хорошо, потому что я новичок. Лучше всего, если вы могли бы иметь проблемы написания кода-фрагмент здесь ...;)
Это некоторый код первого взгляда:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"pinView"];
if (!pinView) {
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pinView"];
pinView.pinColor = MKPinAnnotationColorRed;
pinView.animatesDrop = YES;
pinView.canShowCallout = YES;
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
pinView.rightCalloutAccessoryView = rightButton;
} else {
pinView.annotation = annotation;
}
return pinView;
}
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
Annotation *ann = [[mapView selectedAnnotations] objectAtIndex:0];
NSLog(@"ann.subtitle = %@", ann.subtitle);
NSLog(@"ann.cid = %@", ann.cid);
NSLog(@"ann.cstr = %@", ann.cstr);
NSLog(@"ann.cname = %@", ann.cname);
//this works fine, I get all the values
[self performSegueWithIdentifier: @"openingHours" sender:ann];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"openingHours"]) {
LAOpeningHoursViewController *secondView = (LAOpeningHoursViewController*)segue.destinationViewController;
//PFObject *tempObject = [[myMapView selectedAnnotations] objectAtIndex:0];
Annotation *ann = (id)sender;
//Here is the problem: What to pass? I want to pass for example ann.cname that is declared in my custom annotation
//Both 'ann' and 'tempObject' has the right values for cname but I dont know how to pass it to the next view
secondView.myLabel.text = self.stringToPass;
//secondView.myLabel.text = ann.cname;
}
}
А вот код со второй точки зрения называется LAOpeningHoursViewController, которые должны получить данные:
- (void)viewDidLoad
{
[super viewDidLoad];
self.myLabel.text = ann.cname;
//recieving an error-code… of course
}
объявленных в LAOpeningHoursViewController.h как это
@property (strong, nonatomic) IBOutlet UILabel *myLabel;
@property (strong, nonatomic) NSString *textContent;
и, наконец, вот мой Annotation.h-файл, в котором CNAME является тот, который должен выйти на «MyLabel»
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface Annotation : NSObject <MKAnnotation>
@property(nonatomic, assign) CLLocationCoordinate2D coordinate;
@property(nonatomic, copy)NSString *title;
@property(nonatomic, copy)NSString *subtitle;
@property(nonatomic, copy)UIButton *rightButton;
@property(nonatomic, retain)NSString *cid;
@property(nonatomic, retain)NSString *cname;
@property(nonatomic, retain)NSString *ctel;
@property(nonatomic, retain)NSString *cstr;
@property(nonatomic, retain)NSString *cmon;
@property(nonatomic, retain)NSString *ctue;
@property(nonatomic, retain)NSString *cwed;
@property(nonatomic, retain)NSString *passedId;
@property(nonatomic, retain)NSString *objectId;
@end
Возможный дубликат [Передача данных между контрольными контроллерами] (http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –
Спасибо @Hot Licks, но мне нужно понять, как я могу получить значения из моего пользовательского класса Annotation * ann от первого представления до моего второго. Я хочу написать ann.cname, но я получаю свойство, которое не найдено на объекте типа PFObject. Теперь это просто не работает, и это сводит меня с ума :) – Kardemumma09
И вы включаете Annotation.h в LAOpeningHoursViewController.m? (И как объявляется 'ann') –