【发布时间】:2014-12-29 02:47:59
【问题描述】:
我正在尝试学习如何将位置编程到应用程序中,而这整段代码真的让我对 locationManager 和委托感到困惑。当您声明一个名为 locationManager 的函数时,我完全不明白发生了什么。您正在定义这个函数,locationManager,对吗?有2个参数。那么究竟是什么调用了这个 locationManager 呢?在浏览Complete iOS Developer Course 时,他拿了这个locationManager sn-p 并复制粘贴它,而没有解释你在复制和粘贴时所做的工作背后的原理。是否有一些代码行调用“locationManager(...)”?如果是这样,这发生在哪里?我的大脑一直在想,如果它是一个从超类 CLLocationManagerDelegate 继承的函数,难道你不需要重写它才能让它工作吗?您能否就代表的具体工作方式给出一些直觉?
class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
@IBOutlet var myMap : MKMapView!
var manager:CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// Core Location
manager = CLLocationManager()
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
}
func locationManager(manager:CLLocationManager, didUpdateLocations locations:[AnyObject]) {
var userLocation:CLLocation = locations[0] as CLLocation
var latitude:CLLocationDegrees = userLocation.coordinate.latitude
var longitude:CLLocationDegrees = userLocation.coordinate.longitude
var latDelta:CLLocationDegrees = 0.01
var lonDelta:CLLocationDegrees = 0.01
var span:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, lonDelta)
var location:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
var region:MKCoordinateRegion = MKCoordinateRegionMake(location, span)
myMap.setRegion(region, animated: true)
}
func locationManager(manager:CLLocationManager, didFailWithError error:NSError)
{
println(error)
}
非常感谢您的帮助!
【问题讨论】:
标签: ios oop swift delegates cllocationmanager