Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在推送导航控制器的viewController中实现MapKit的有效方法?_Ios_Swift_Mapkit - Fatal编程技术网

Ios 在推送导航控制器的viewController中实现MapKit的有效方法?

Ios 在推送导航控制器的viewController中实现MapKit的有效方法?,ios,swift,mapkit,Ios,Swift,Mapkit,我试图在IB中的viewController中添加一个mapKit,我正在将其推到导航控制器的顶部,但无论在循环中的何处添加注释,似乎整个过程都会导致延迟,直到mapKit未呈现,包含所有内容的scrollview都不会轻松滚动。例如,在iOS中有没有类似于Android的后台线程的方法 下面是代码,即使没有添加任何注释,渲染仍然会导致延迟。我很肯定还有别的办法。有什么想法吗 class DetailViewController: UIViewController , MKMapViewDele

我试图在IB中的viewController中添加一个mapKit,我正在将其推到导航控制器的顶部,但无论在循环中的何处添加注释,似乎整个过程都会导致延迟,直到mapKit未呈现,包含所有内容的scrollview都不会轻松滚动。例如,在iOS中有没有类似于Android的后台线程的方法

下面是代码,即使没有添加任何注释,渲染仍然会导致延迟。我很肯定还有别的办法。有什么想法吗

class DetailViewController: UIViewController , MKMapViewDelegate{

    override func viewDidLoad() {
            super.viewDidLoad()
            self.mapView?.delegate = self
    }


      //changing the annotation
        func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
            if (annotation is MKUserLocation) {
                return nil
            }
            let reuseId = "detailMrker"
            var anView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId)
            if anView == nil {
                anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
                anView?.image = UIImage(named:"location.png")
                anView?.canShowCallout = true
            }
            else {
                anView?.annotation = annotation
            }
            return anView
        }

}

您可以提前渲染VC,并通过模式演示从屏幕外呈现它。如果您必须从UINavigationController中推送,那么在推送VC之后,您将一直等待VC调用其视图的draw方法


不过,你还可以提前做其他事情。使用除DetailFeedViewController之外的其他内容作为CLLocationManagerDelegate和MKMapDelegate。如果这样做,您可以在推送VC之前获取用户的位置、设置地图坐标并添加注释。

请显示您的真实代码。谢谢您的回复。通过渲染一个VC aeahd时间,你是指实例化一个视图控制器,然后直接呈现(VC…)吗?有不同的方法来处理它,而且涉及到它;否则我就举个例子。基本上,VC的view属性可以像其他UIView一样处理:可以调用它的draw方法,等等。。。。让myVC=UIViewController()只调用viewDidLoad,因此您需要做更多的工作。查看动画的持续时间和模式演示。此外,这也是重要的一部分,MKMapKit通常并不较慢,因为它在视觉上更加详细,而是因为它需要来自蜂窝设备或GPS的数据。我敢打赌,我的回答的后半部分会更有帮助。如果你愿意的话,我可以给你找一些我的例子。再次感谢,如果你能发布一些东西而不是文字,那就太好了,不是因为你的回复不正确,而是我想我能更好地理解代码。另外,我刚刚遇到了MKMapSnapshotter(),如果我能设法让它工作起来,这似乎是一个很好的解决方案;它基本上提供了一个地图的图像,而不是地图本身,这样我就可以无缝地加载该图像,我想性能会更好。谢天谢地是我不久前做的一个游戏。我的搭档退出了,所以请随意使用。请注意,我的CLLocationManager是一个单例,这意味着我可以在启动应用程序时(或任何时候)开始访问用户的位置。在实际视图加载之前,您可以对MKMapKit和委托执行相同的操作,并准备好所有位置信息: