locationManager didUpdateLocation,在另一个 class swift 上更改 UIElements
locationManager didUpdateLocation, change UIElements on another class swift
所以我在我的应用程序中实现了定位。
我创建了一个 class 来处理位置信息,我正在使用 locationManager didUpdateLocations 来了解何时找到位置。
我需要完成的是更改按钮上的图像并停止另一个 class(viewController).
中的 activityIndicator
我试图获取 viewController 的实例以在我的 locationClass 中使用,但失败并返回了 nil。
有没有人有好的方法来实现这个?
我想我需要获得我的 viewController 的一个实例,但我没有这样做。顺便说一句,位置信息正在运行!
编辑:
感谢 naomimichiko 我设法做到了。我添加了一个解释如何操作的答案。
听起来您可能想编写自己的协议,在 didUpdateLocations 中触发方法调用,让您的其他 class 知道。
你可以想到delegate
或NSNotification
在位置更新时通知其他人。
感谢 naomimichiko,我制定了一个协议来处理我所需要的!
这是我的做法:
我首先创建了一个名为:'protocols.swift' 的文件。在此我声明了我的协议:
@objc protocol LocDelegate{
optional func locationFound()
}
在位置 class 处理我添加的位置内容:
var delegateLoc: LocDelegate?
我有 func locationManager didUpdateLocaton 在位置 class 并且我在那里做了这个:
delegateLoc?.locationFound!()
如果有 class 侦听此功能,则此功能将 "run" 该功能。
在我的 viewController 中,我需要更新标签和狗屎,我将协议添加到 class 中,如下所示:
class ViewController: UIViewController, LocDelegate
然后在 viewDidLoad 中我将委托设置为 self。
let locatonClass = locationClass()
locatonClass.delegateLoc = self
剩下的只是添加协议需要的功能:
func locationFound() {
self.hereIAm.setImage(UIImage(named: "loc1.png"), forState: .Normal)
self.activityIndicator1.stopAnimating()
}
就是这样...这真的很简单,但很难弄清楚如何完成它。
在此处阅读有关自定义协议的更多信息:Custom Protocols
所以我在我的应用程序中实现了定位。
我创建了一个 class 来处理位置信息,我正在使用 locationManager didUpdateLocations 来了解何时找到位置。 我需要完成的是更改按钮上的图像并停止另一个 class(viewController).
中的 activityIndicator我试图获取 viewController 的实例以在我的 locationClass 中使用,但失败并返回了 nil。
有没有人有好的方法来实现这个? 我想我需要获得我的 viewController 的一个实例,但我没有这样做。顺便说一句,位置信息正在运行!
编辑: 感谢 naomimichiko 我设法做到了。我添加了一个解释如何操作的答案。
听起来您可能想编写自己的协议,在 didUpdateLocations 中触发方法调用,让您的其他 class 知道。
你可以想到delegate
或NSNotification
在位置更新时通知其他人。
感谢 naomimichiko,我制定了一个协议来处理我所需要的! 这是我的做法:
我首先创建了一个名为:'protocols.swift' 的文件。在此我声明了我的协议:
@objc protocol LocDelegate{
optional func locationFound()
}
在位置 class 处理我添加的位置内容:
var delegateLoc: LocDelegate?
我有 func locationManager didUpdateLocaton 在位置 class 并且我在那里做了这个:
delegateLoc?.locationFound!()
如果有 class 侦听此功能,则此功能将 "run" 该功能。
在我的 viewController 中,我需要更新标签和狗屎,我将协议添加到 class 中,如下所示:
class ViewController: UIViewController, LocDelegate
然后在 viewDidLoad 中我将委托设置为 self。
let locatonClass = locationClass()
locatonClass.delegateLoc = self
剩下的只是添加协议需要的功能:
func locationFound() {
self.hereIAm.setImage(UIImage(named: "loc1.png"), forState: .Normal)
self.activityIndicator1.stopAnimating()
}
就是这样...这真的很简单,但很难弄清楚如何完成它。 在此处阅读有关自定义协议的更多信息:Custom Protocols