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

时间:2012-05-07 00:02:23

标签: ios5 uiviewcontroller mapkit

我正在尝试从委托方法didSelectAnnotationView创建一个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];
}

点击Annotation后,我看到一个带有导航栏的黑色ViewController屏幕。但是日志告诉我所有内容都正确加载。所以看起来我的Destination ViewController就在后台。

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

我已经在Apple开发者网站上进行过研究,并找到了我的问题的答案。我正在使用Storyboard,这里是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];

}

在这里可以找到有关View Controller Programming的更多信息的链接: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/UsingViewControllersinYourApplication/UsingViewControllersinYourApplication.html