gpt4 book ai didi

ios - 如何快速将数据从委托(delegate)类方法传回 ViewController?

转载 作者:行者123 更新时间:2023-11-28 08:31:29 24 4
gpt4 key购买 nike

在 ViewController 中,我初始化了一个类 Location,它位于 Location.swift 中以便使用它的方法。

ViewDidLoad 中,我调用了 Location 中的第一个方法来设置位置服务(权限等)。同样在 Location 中,有两个来自 CLLocationManagerDelegate 的委托(delegate)方法。

ViewController 看起来像(简化了!):

class ViewController: UIViewController {
var location = Location();
override func viewDidLoad() {
location.initLocation();
//when updated data from delegated method, i want to get data to here, in order to output it in UI labels,etc
}
}

Location.swift 看起来像(简化了!):

import CoreLocation

class Location: NSObject, CLLocationManagerDelegate{
func initLocation(){
........
}

@objc func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading){
//i want to send newHeading data to viewController here
}

}

我可以轻松地从 initLocation() 获取数据,因为我自己调用并定义了该方法。但是,如果我需要从 locationManager 方法获取数据,但我没有调用该方法怎么办?

如果您有任何问题,请随时提出。我希望我已经充分解释了!

干杯

最佳答案

您可以尝试为 Location 创建一个新的委托(delegate),例如:

ViewController.swift

class ViewController: UIViewController, LocationDeleate {

var location = Location()

override func viewDidLoad() {

location.deleagte = self
//location.initLocation()
}

func initLocation() {

//when updated data from delegated method, i want to get data to here, in order to output it in UI labels,etc
}
}

然后新建一个protocol swift文件:

位置协议(protocol).swift

protocol LocationProtocol : class {
func initLocation()
}

位置.swift

import CoreLocation

class Location: NSObject, CLLocationManagerDelegate{

weak var delegate : LocationDelegate?

@objc func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading){

// send notification to parent view controller
delegate?.initLocation()
}
}

关于ios - 如何快速将数据从委托(delegate)类方法传回 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38797780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com