Я создаю приложение панели вкладок, и на одной из вкладок настроен MapView.
Я преобразовал это из приложения на основе представления, которое отлично работало, поэтому я знаю, что оно в основном настроено правильно.
Каждый предварительно размещенный контакт на карте имеет аннотации и leftCalloutAccessoryViewэто ссылки на DetailViewController.Мне нужно, чтобы экран выноски (детализированный контроллер) просто отображался на той же вкладке, но когда я нажимаю на левую кнопку выноски, программа вылетает.
Метод, который я использую для прикосновения к вспомогательному элементу выноски, таков:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view
calloutAccessoryControlTapped:(UIControl *)control
{
MillersLocations *annotationTapped = (MillersLocations *)view.annotation;
NSLog(@"button clicked on annotation %@", annotationTapped);
LocationsViewController *thisMap = (LocationsViewController *)[[UIApplication sharedApplication] delegate];
DetailViewController *dvc = [[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil];
dvc.title = view.annotation.title;
dvc.addressString = view.annotation.subtitle;
[thisMap switchViews:self.view toView:dvc.view]; //This is the line with the error message
}
В строке '[thisMap switchViews: self.view toView: dvc.view];'Я получаю ошибку SIGABRT.И ошибки:
2011-10-25 14:11:11.465 Miller Tab Bar[56230:207] -[Miller_Tab_BarAppDelegate switchViews:toView:]: unrecognized selector sent to instance 0x5835530
2011-10-25 14:11:11.467 Miller Tab Bar[56230:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Miller_Tab_BarAppDelegate switchViews:toView:]: unrecognized selector sent to instance 0x5835530'
Недопустим ли метод switchViews в приложении панели вкладок?Если да, то какой метод обычно используется в приложении панели вкладок для переключения представлений на определенной вкладке?Спасибо за помощь, я все еще учусь!
РЕДАКТИРОВАТЬ
Я понял, что я называю это 'self.view', так что вот как я обновил код.У меня был LocationsViewController, установленный в качестве делегата из-за ошибки копирования и вставки.: * 10101 *
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
MillersLocations *annotationTapped = (MillersLocations *)view.annotation;
NSLog(@"button clicked on annotation %@", annotationTapped);
LocationsViewController *thisMap = [[LocationsViewController alloc]initWithNibName:@"LocationsViewController" bundle:nil];
DetailViewController *dvc = [[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil];
dvc.title = view.annotation.title;
dvc.addressString = view.annotation.subtitle;
[thisMap switchViews:self.view toView:dvc.view];
}
Теперь я не получаю ошибку, но она не переключает представления.Он выходит из системы и все, но никуда не уходит.Метод объявлен в LocationsViewController.h и реализован в LocationsViewController.m.Почему бы не ссылаться ни на что?