MapView: используйте MKUserTrackingBarButtonItem для переключения состояния отслеживания карты

#iphone #objective-c #ios #mkmapview #mapkit

#iPhone #objective-c #iOS #mkmapview #mapkit

Вопрос:

Я добавил MKUserTrackingBarButtonItem на свою панель инструментов. Но нажатие на него ничего не дает. Итак, я предположил, что мне нужно использовать addTarget как обычный UIBarButtonItem, но это тоже не работает.

Как я могу прикрепить метод к этой кнопке, чтобы я мог изменить setUserTrackingMode:animated: ?

 MKUserTrackingBarButtonItem *trackingItem = [[[MKUserTrackingBarButtonItem alloc] initWithMapView:mapView] autorelease];
    UISegmentedControl *segmentedControl = [[[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"List", @"Detail", nil]] autorelease];
    segmentedControl.frame = CGRectMake(0, 0, 220, 30);
    [segmentedControl setWidth:100.0 forSegmentAtIndex:0];
    [segmentedControl setWidth:100.0 forSegmentAtIndex:1];
    [segmentedControl setSelectedSegmentIndex:0];
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    UIBarButtonItem *segmentedButton = [[[UIBarButtonItem alloc] initWithCustomView:segmentedControl] autorelease];
    UIBarButtonItem *pageCurl = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPageCurl target:self action:nil] autorelease];
    pageCurl.tintColor = [UIColor lightGrayColor];
    UIBarButtonItem *leftFlex = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
    UIBarButtonItem *rightFlex = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
    self.toolbar.items = [NSArray arrayWithObjects:trackingItem, leftFlex, segmentedButton, rightFlex, pageCurl, nil];
  

Ответ №1:

Я думаю, вам следует инициализировать MKUserTrackingBarButtonItem с помощью этого метода:

 – initWithMapView:
  

Обратитесь к документации: http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKUserTrackingBarButtonItemClassRef/Reference/Reference.html

Ответ №2:

 MKUserTrackingBarButtonItem *trackButton = [[MKUserTrackingBarButtonItem alloc] initWithMapView:mapView];   
[trackButton setTarget:self];
[trackButton setAction:@selector(track:)];

[toolbar setItems:[NSArray arrayWithObjects:trackButton, nil] animated:YES];