0

Я работаю с липкой компоновкой потока заголовка (https://github.com/jamztang/CSStickyHeaderFlowLayout) в моем проекте, но у меня возникают проблемы с отображением карты в заголовке. Заголовок коллекционного представления - это мой пользовательский класс HeaderMapViewCell, который относится к подклассам UICollectionViewCell и имеет IBOutlet для MKMapView, но он не отображает никаких аннотаций или не запускает никаких действий, даже несмотря на то, что его свойства меняются (когда я печатаю их в отладчик).MapView внутри UICollectionViewCell не работает

В основном это моя установка

UICollectionViewController -> CollectionView -> HeaderMapViewCell -> MapView

enter image description here

Кроме того, например, здесь:

-(IBAction)changeData:(UISegmentedControl*)sender{ 
    if (_mapView.mapType == MKMapTypeStandard) 
     [_mapView setMapType:MKMapTypeSatellite]; 
    else 
     [_mapView setMapType:MKMapTypeStandard]; 
    if(sender.selectedSegmentIndex==0) 
     _displayStudents = YES; 
    else 
     _displayStudents = NO; 
    [self.collectionView reloadData]; 

} 

Когда я огонь этот метод, ничего на карте не меняется, но когда я ставлю точку останова, свойство mapview действительно меняется, просто не вытесняете что-нибудь визуально!

Методы делегирования Viewview контроллеров View ViewView частично запущены. RegionDidChangeAnimated запускается один раз при загрузке, тогда, когда я увеличиваю масштаб, он не срабатывает. С другой стороны, viewForAnnotation вызывает вызов и возвращает правильный объект, но никогда ничего не отображает. Я делаю что-то неправильно с mapview, просто не знаю, что. Дайте мне знать, если у вас есть идея, или вам нужно, чтобы я опубликовал больше кода или что-то еще! Благодаря!

ответ

0

Проверить этот метод

[MapView addAnnotation: YourMapAnnotation];

Где вы назвали этот метод?

Вы можете поместить его в файл doUpdateLocation (locationManager)/didUpdateUserLocation (mapView) или viewDidLoad.

И если ваш MapView использовать iOS8 позже, вам нужно проверить авторизацию через locationManger

// ios8 

if([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]){ 

    [self.locationManager requestWhenInUseAuthorization]; 

    CLAuthorizationStatus status = [CLLocationManager authorizationStatus]; 
    if(status == kCLAuthorizationStatusAuthorizedWhenInUse){ 
     self.mapView.showsUserLocation = YES; 
    } 
}else{ 

    self.mapView.showsUserLocation = YES; 

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