对于关键的EventCreate,此类不符合键值编码

时间:2015-12-19 07:01:35

标签: ios swift

我是Swift和iOS开发的新手。我尝试将辅助视图控制器加载为mapView上的叠加层,当我尝试这样做时,我遇到了标题中列出的错误。我很难过。

我的代码如下:

// mainMapViewController.swift
import UIKit
import MapKit
import CoreLocation
var events = [Event]()

class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate, UIGestureRecognizerDelegate {

@IBOutlet weak var mapView: MKMapView!

let mainStoryBoard = UIStoryboard(name: "Main", bundle: nil)

let locationManager = CLLocationManager()

@IBAction func addEvent(mylongpress: UIGestureRecognizer) {
    if mylongpress.state == UIGestureRecognizerState.Began {
        let touchpoint = mylongpress.locationInView(mapView)
        let newcoord = mapView.convertPoint(touchpoint, toCoordinateFromView: mapView)
        let pin = MKPointAnnotation()
        pin.coordinate = newcoord

        let eventcreatevc = mainStoryBoard.instantiateViewControllerWithIdentifier("EventCreate") as! EventCreate

        eventcreatevc.modalPresentationStyle = .OverCurrentContext

        self.presentViewController(eventcreatevc, animated: true, completion: nil)

        //events.last!.annotation = pin

        //events.last!.annotation.title = events.last!.eventName

        //pin.title = events.last!.annotation.title

        if events.isEmpty {
            pin.title = "this is a test"
        }

        self.mapView.addAnnotation(pin)

        print("added pin to map")
    }
}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    let location = locations.last

    let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)

    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.07, longitudeDelta: 0.07))

    self.mapView.setRegion(region, animated: true)
}

override func viewDidLoad() {
    super.viewDidLoad()

    self.locationManager.delegate = self
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
    self.locationManager.requestWhenInUseAuthorization()
    self.locationManager.startUpdatingLocation()

    self.mapView.showsUserLocation = true

    let longpress = UILongPressGestureRecognizer(target: self, action: "addEvent:")

    mapView.addGestureRecognizer(longpress)


}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "EventCreate" {
        var eventcreatevc = segue.destinationViewController as! EventCreate
    }
}

override func viewWillAppear(animated: Bool) {
    if events.isEmpty {
        return
    }
    else {
        for listofevent in events {
            let pin = listofevent.annotation
            self.mapView.addAnnotation(pin)
        }
        return
    }
}
}

// EventCreate.swift
import UIKit
import MapKit
import CoreLocation

class EventCreate: UIViewController, UITextFieldDelegate, MKMapViewDelegate, UIGestureRecognizerDelegate {

// MARK: Properties

var name: String = ""
var loc: String = ""
var cost: Int = 0
var date: String = ""
var annot: MKPointAnnotation = MKPointAnnotation()

@IBOutlet weak var datePicker: UIDatePicker!
@IBOutlet weak var costSlider: UISlider!
@IBOutlet weak var locationTextField: UITextField!
@IBOutlet weak var locationLabel: UILabel!
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var costLabel: UILabel!
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var eventNameLabel: UILabel!
@IBOutlet weak var createButton: UIButton!

// MARK: UITextFieldDelegate

func textFieldDidBeginEditing(textField: UITextField) {
    createButton.enabled = false
}

func checkValidTextEntry(textField: UITextField) {
    let text = textField.text ?? ""
    createButton.enabled = !text.isEmpty
}

func textFieldShouldReturn(textField: UITextField) -> Bool {

    // hides the keyboard
    textField.resignFirstResponder()
    return true
}

func textFieldDidEndEditing(textField: UITextField) {
    if textField == nameTextField {
        checkValidTextEntry(textField)
        name = textField.text!
    }
    else if textField == locationTextField {
        loc = textField.text!
    }
}

func setAnnotation(annot: MKPointAnnotation) {
    self.annot = annot
}

// MARK: Initialization

override func viewDidLoad() {
    super.viewDidLoad()

    nameTextField.delegate = self
    locationTextField.delegate = self

    checkValidTextEntry(nameTextField)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: Actions



// MARK: - Navigation

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if createButton === sender {
        let event = Event(eventName: name, location: loc, cost: cost, date: date, annotation: annot)
        events.append(event!)
    }
}


}

非常感谢任何帮助!

0 个答案:

没有答案