0

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

在我点击注释后,我看到的只是一个带有导航栏的黑色 ViewController 屏幕。但是日志告诉我一切都正确加载。所以看起来我的目标 ViewController 在后台某处。

4

2 回答 2

0

我在 Apple Developer Site 上进行了研究,并找到了我的问题的答案。我正在使用 Storyboards,这里是 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

于 2012-05-07T14:07:28.970 回答
0

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

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

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

于 2012-05-07T07:01:33.743 回答