ViewController从MapKit创建后在后台加载(didSelectAnnotationView)



我正在尝试从委托方法didSelectAnnotationView a ViewController创建。我有以下代码:

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
    DestinationViewController *destinationViewController = [[DestinationViewController alloc] init];
    NSNumber *mynumberId = [NSNumber numberWithInt:1];
    destinationViewController.mynumberId = mynumberId;
    [self.navigationController pushViewController:destinationViewController animated:YES];
}

点击注释后,我只看到一个带有导航栏的黑色视图控制器屏幕。但是日志告诉我一切都已正确加载。所以似乎我的目的地视图控制器在后台的某个地方。

如果你从 Nib 创建 VC,你需要使用 initWithNibName: 而不仅仅是 init。

如果以编程方式加载视图,则需要检查 viewDidLoad 方法。

这不是 mapKit 问题,但您没有按照应有的方式加载 VC 及其视图。

我在苹果开发者网站上进行了研究,找到了问题的答案。我正在使用故事板,这里是Apple的代码片段:

- (IBAction)presentSpecialViewController:(id)sender {
    UIStoryboard *storyboard = self.storyboard;
    SpecialViewController *svc = [storyboard instantiateViewControllerWithIdentifier:@"SpecialViewController"];
    // configure the new view controller explicitly here.
    [self presentViewController:svc animated:YES completion:nil];
}

在这里,您可以找到有关视图控制器编程的更多信息:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/UsingViewControllersinYourApplication/UsingViewControllersinYourApplication.html

最新更新