我正在尝试从位置管理器函数中提取纬度和经度,然后在UITableView中显示。我希望它更新TableView作为位置更新。但是Collect
数组仍然是空的?
我怎样才能做到这一点?
任何意见都将非常感谢!
这是我的代码:
class ThirdViewController: UIViewController, CLLocationManagerDelegate, UITableViewDelegate, UITableViewDataSource{
@IBOutlet weak var map: MKMapView!
@IBOutlet var Tableview: UIView!
let manager = CLLocationManager()
var Collect = [Double]()
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations[0]
let span:MKCoordinateSpan = MKCoordinateSpanMake(0.01,0.01) //shows the size of map screen
let myLocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(location.coordinate.latitude,location.coordinate.longitude)
let region:MKCoordinateRegion = MKCoordinateRegionMake(myLocation, span)
map.setRegion(region, animated: true)
self.map.showsUserLocation = true
let lat = (location.coordinate.latitude)
let long = (location.coordinate.longitude)
Collect.append(lat)
Collect.append(long)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return Collect.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "TableCell")
cell.textLabel?.text = Collect[indexPath.row]
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
super.viewDidLoad()
print(Collect)
}
答案 0 :(得分:1)
class ThirdViewController: UIViewController, CLLocationManagerDelegate, UITableViewDelegate, UITableViewDataSource{
@IBOutlet weak var map: MKMapView!
@IBOutlet var Tableview: UIView!
let manager = CLLocationManager()
var Collect = NSMutableArray()
var filterArr = NSArray()
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations[0]
let span:MKCoordinateSpan = MKCoordinateSpanMake(0.01,0.01) //shows the size of map screen
let myLocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(location.coordinate.latitude,location.coordinate.longitude)
let region:MKCoordinateRegion = MKCoordinateRegionMake(myLocation, span)
map.setRegion(region, animated: true)
self.map.showsUserLocation = true
let lat = String(location.coordinate.latitude)
let long = String(location.coordinate.longitude)
Collect.append(lat)
Collect.append(long)
filterArr = Collect as NSMutableArray()
Tableview.reloadData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return Collect.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "TableCell")
cell.textLabel?.text = Collect[indexPath.row]
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
super.viewDidLoad()
Tableview.delegate = self
Tableview.datasource = self
print(Collect)
}