【问题标题】:ViewController loaded in the Background after creating it from MapKit (didSelectAnnotationView)从 MapKit (didSelectAnnotationView) 创建后在后台加载的 ViewController
【发布时间】:2012-05-07 00:02:23
【问题描述】:

我正在尝试从委托方法 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 在后台某处。

【问题讨论】:

    标签: ios5 uiviewcontroller mapkit


    【解决方案1】:

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

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

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

    【讨论】:

    • 我正在使用情节提要。我已经找到了我的问题的解决方案,谢谢。
    【解决方案2】:

    我在 Apple Developer Site 上进行了研究,并找到了我的问题的答案。我正在使用 Storyboard,这里是 Apple 的代码 sn-p:

    - (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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      • 2018-01-12
      • 2012-01-02
      • 1970-01-01
      相关资源
      最近更新 更多