【问题标题】:UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debuggerUICollectionViewFlowLayoutBreakForInvalidSizes 在调试器中捕获这个
【发布时间】:2018-02-27 07:49:48
【问题描述】:

我正在尝试创建一个座位图布局功能,该功能采用坐标并创建一个我想提供地图包含的部分的值的地图。我正在使用自定义 collectionViewLayout 来创建单元格,但标题中出现了该错误。

这是我的协议-

  protocol SeatMapDelegate: class {

    func getSectionCoordinates() -> [Int]

  }

定义-

func getSectionCoordinates() -> [Int] {
        return sectionHeader
    }

然后我将值分配给数组

  var sectionHeader = [Int]()
  sectionHeader=(delegate?.getSectionCoordinates())!

【问题讨论】:

    标签: ios uicollectionview swift4


    【解决方案1】:

    下面的代码是我在地图上搜索和查找坐标的项目: 或许能帮到你

    //  ViewController.swift
    //  MapKit Starter
    //
    //  Created by Ehsan Amiri on 10/25/16.
    //  Copyright © 2016 Ehsan Amiri. All rights reserved.
    //
    
    import UIKit
    import MapKit
    import Foundation
    
    class ViewController: UIViewController {
        @IBOutlet var mapView: MKMapView?
        @IBOutlet weak var text: UITextField!
    
    
        var index = 0  
        var indexx = 0
    
    
    
        let locationManager = CLLocationManager()
    
        var picName:String?
    
    
        var place :MKAnnotation?
        var places = [Place]()
    
        var place1 :MKAnnotation?
        var places1 = [Place]()
    
    
        override func viewDidLoad() {
    
            super.viewDidLoad()
    
            //downpic()
            self.requestLocationAccess()
            }
    
    
        override func viewWillAppear(_ animated: Bool) {
    
            let defaults = UserDefaults.standard
            let age = defaults.integer(forKey: "maptype")
            switch (age) {
            case 0:
                mapView?.mapType = .standard
            case 1:
                mapView?.mapType = .satellite
            case 2:
                mapView?.mapType = .hybrid
            default:
                mapView?.mapType = .standard
            }
    
        }
    
    
    
    
        @IBAction func info(_ sender: Any) {
    
        }
    
    
        override var prefersStatusBarHidden: Bool {
            return true
        }
    
        func requestLocationAccess() {
            let status = CLLocationManager.authorizationStatus()
    
            switch status {
            case .authorizedAlways, .authorizedWhenInUse:
                return
    
            case .denied, .restricted:
                print("location access denied")
    
            default:
                locationManager.requestWhenInUseAuthorization()
            }
        }
    
        @IBAction func textField(_ sender: Any) {
    
    
            mapView?.removeOverlays((mapView?.overlays)!)
            mapView?.removeAnnotations((mapView?.annotations)!)
    
            self.server()
            _ = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(self.server), userInfo: nil, repeats: true)
    
    
    
    
            let when = DispatchTime.now() + 1.5
            DispatchQueue.main.asyncAfter(deadline: when) {
                if self.indexx != 0 {
                    self.addAnnotations()
                    self.addPolyline()
                }
            }
    
    
        }
    
    
        @objc func server() {
    
    
            place = nil
            places = [Place]()
    
            place1 = nil
            places1 = [Place]()
    
            indexx = 0
    
            let id  = text.text
            print("id=\(id!)")
    
            let url = URL(string: "my server")!
            var request = URLRequest(url: url)
            request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
            request.httpMethod = "POST"
            let postString = "id=\(id!)"
            request.httpBody = postString.data(using: .utf8)
            let task = URLSession.shared.dataTask(with: request) { data, response, error in
                guard let data = data else {                                                 // check for fundamental networking error
                    print("error=\(String(describing: error))")
                    return
                }
    
                if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
                    print("statusCode should be 200, but is \(httpStatus.statusCode)")
                    print("response = \(String(describing: response))")
                }
    
    
    
                let responseString = String(data: data, encoding: .utf8)
                print("responseString = \(String(describing: responseString))")
    
    
                let stringgg = "notFound\n\n\n\n"
    
                if responseString == stringgg {
                    print(stringgg)
                }else{
                    let json = try! JSONSerialization.jsonObject(with: data, options: [])
                    let betterJSON = json as! NSArray
                    let jsonCount = betterJSON.count
    
                    print(betterJSON)
    
                    for item in betterJSON {
    
                        self.indexx += 1
                        let dictionary = item as? [String : Any]
                        let title = dictionary?["title"] as? String
                        let subtitle = dictionary?["description"] as? String
                        let latitude = dictionary?["latitude"] as? Double ?? 0, longitude = dictionary?["longitude"] as? Double ?? 0
    
                        self.place = Place(title: title, subtitle: subtitle, coordinate: CLLocationCoordinate2DMake(latitude , longitude ))
                        self.places.append(self.place as! Place)
    
                        print("latttt",longitude)
    
                        if self.indexx == 1{
    
                            let shipid = UserDefaults.standard
                            shipid.set(title, forKey: "origin")
                            shipid.set(subtitle, forKey: "date")
                        }
    
    
                        if  jsonCount == self.indexx{
                            let shipid = UserDefaults.standard
                            shipid.set(title, forKey: "location")
    
                            self.place1 = Place(title: title, subtitle: subtitle, coordinate: CLLocationCoordinate2DMake(latitude , longitude ))
                            self.places1.append(self.place1 as! Place)
                        }
    
                    }
    
                }
            }
    
            task.resume()
            let when = DispatchTime.now() + 1.5
            DispatchQueue.main.asyncAfter(deadline: when) {
                if self.indexx != 0 {
                    self.addAnnotations()
                    self.addPolyline()
                }
            }
    
        }
    
    
        func addAnnotations() {
    
            print("hhhh",places)
    
            mapView?.delegate = self
    
    
            mapView?.removeAnnotations((mapView?.annotations)!)
            mapView?.addAnnotations(places1)
    
            let overlays = places1.map { MKCircle(center: $0.coordinate, radius: 100) }
            mapView?.addOverlays(overlays)
    
        }
    
    
    
        func addPolyline() {
            var locations = places.map { $0.coordinate }
            let polyline = MKPolyline(coordinates: &locations, count: locations.count)
            //        print("Number of locations: \(locations.count)")
            index = locations.capacity
    
    
    
            mapView?.add(polyline)
        }
    
    
    }
    
    extension ViewController: MKMapViewDelegate {
        func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
            if annotation is MKUserLocation {
                return nil
            }
    
            else  {
                let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "annotationView") ?? MKAnnotationView()
    
    
    
                annotationView.image = UIImage(named:"place icon")
                annotationView.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)
                annotationView.canShowCallout = true
                return annotationView
            }
        }
    
        func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
            if overlay is MKCircle {
                let renderer = MKCircleRenderer(overlay: overlay)
                renderer.fillColor = UIColor.black.withAlphaComponent(0.5)
                renderer.strokeColor = UIColor.blue
                renderer.lineWidth = 2
                return renderer
    
            } else if overlay is MKPolyline {
                let renderer = MKPolylineRenderer(overlay: overlay)
                renderer.strokeColor = UIColor.orange
                renderer.lineWidth = 2
                return renderer
            }
    
    
            return MKOverlayRenderer()
        }
    
        func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
    
    
            //guard let annotation = view.annotation as? Place, let title = annotation.title else { return }
    
            let shipidname = text.text
    
            let shipid = UserDefaults.standard
            shipid.set(shipidname, forKey: "shipid")
    
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let secondViewController = storyboard.instantiateViewController(withIdentifier: "shipinfo")
            self.present(secondViewController, animated: true, completion: nil)
    
    
    
        }
    
    
    
    }
    

    【讨论】:

    • 我有坐标,但我想在触发错误时以数组的形式将它们传递给自定义集合视图布局子类
    猜你喜欢
    • 2018-10-13
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多