Я просмотрел все другие сообщения, связанные с передачей данных между viewcontrollers, но ни один из них не работает для моей проблемы.Пытается передать данные между viewcontrollers - передать название аннотации новому контроллеру просмотров
Я хочу передать название аннотации, чтобы кто-то нажал в mapKit на новый диспетчер представлений, чтобы я мог использовать этот заголовок в новом диспетчере представлений. Я использую метод calloutAccessoryControlTapped
, чтобы обнаружить, когда кто-то нажал на кнопку detailDisclosure, а затем, используя следующий код, чтобы добавить заголовок к свойству во втором ViewController (так называемый detailViewController):
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];
detailViewController *viewController = (detailViewController *)[storyboard instantiateViewControllerWithIdentifier:@"detailViewController"];
detailViewController *detailView = [[detailViewController alloc] init];
// THIS IS WHERE I SET THE ANNOTATION TITLE TO THE PROPERTY IN THE SECOND VIEWCONTROLLER
detailView.titleTime = view.annotation.title;
NSLog(@"view.annotation.title: %@", view.annotation.title); // SHOWS THE TITLE
NSLog(@"detailView.titleTime: %@", detailView.titleTime); // SHOWS THE TITLE
// HERE I PRESENT NEW VIEWCONTROLLER (HOPING THE TITLE IS PASSED)
[self presentViewController:viewController animated:YES completion:nil];
}
Во втором ViewController (detailViewController) у меня есть это в методе viewDidLoad
:
- (void)viewDidLoad
{
[super viewDidLoad];
// set the Title Label to the titleTime (passed from the mainViewController)
self.titleForDetail.text = self.titleTime;
NSLog(@"titleForDetail.text %@:", titleForDetail.text); // THIS IS NULL
NSLog(@"titleForDetail.text %@:", titleTime); // THIS IS NULL
}
Почему self.titleForDetail.text
и self.titleTime NULL
? Почему ничего не передается из исходного viewController?
Вы используете раскадровки? –
Да, я использую StoryBoards. Но я не использую никаких путей ... Я проталкиваю свои взгляды программно. – Cybernetic
Что такое titleTime? Свойство string? И если да, то как вы можете ссылаться на self.titleTime и titleTime? В последних версиях Xcode переменная экземпляра базы данных свойства имеет префикс подчёркивания, поэтому вы знаете, когда используете свойство и когда используете iVar. Кроме того, что такое titleForDetail? Метка, UITextField или UITextView? Ваш код выглядит как titleForDetail is nil –