Экземпляр MapViewController в вашей раскадровке настроен с иерархией представлений, включая MKMapView и все, что вы сделали для настройки этого конкретного экземпляра в раскадровке.
Теперь в этом коде, который вы здесь показываете, вы создаете совершенно новый экземпляр MapViewController. Он не имеет отношения к экземпляру в раскадровке, за исключением того, что они принадлежат к одному классу. Таким образом, тот, который вы создаете здесь с помощью [[MapViewController alloc] init]
, не имеет иерархии представлений (именно поэтому вы видите черный экран), и ни один из выходов или другой конфигурации, которую вы, возможно, внесли в другой MapViewController в вашей раскадровке .
Итак, вам нужно загрузить MapViewController, который вы уже настроили, из раскадровки. Предполагая, что вы делаете это из метода в другом контроллере представления , загруженного из той же раскадровки уже , вы можете просто сделать это:
// within some method on another vc from a scene in the same storyboard:
// given an identifier for the map view controller we want to load:
static NSString *mapVCIdentifier = @"SomeAppropriateIdentifier";
NSLog(@"Storyboard: %@",self.storyboard); // make sure this vc(self) was loaded from a storyboard
MapViewController *mapVC = [self.storyboard instantiateViewControllerWithIdentifier:mapVCIdentifier];
[self presentModalViewController:mapVC animated:YES];
А затем вернувшись в раскадровку, просто убедитесь, что для идентификатора этого контроллера представления карты установлено значение «SomeAppresponIdentifier».
Надеюсь, это поможет.