jeder. Ich habe zwei Möglichkeiten zu codieren:Unterschied zwischen dem Überschreiben einer Klasse und dem Deklarieren von allem im Controller?
Ich habe eine mapView, die einige Variablen haben muss. Ich frage mich, was ist der beste Weg, es zu tun?
Erstens:
class UGOMapView: MKMapView, MKMapViewDelegate, CLLocationManagerDelegate {
let regionRadius: CLLocationDistance = 1000
var usrLocation: CLLocationManager!
var annotationView: MKAnnotationView!
func initUserLocation() {
if (CLLocationManager.locationServicesEnabled()) {
usrLocation = CLLocationManager()
usrLocation.delegate = self
usrLocation.requestAlwaysAuthorization()
usrLocation.requestLocation()
}
}
}
Da ist in meinem Drehbuch:
und in meinem Controller: @IBOutlet weak var mapView: UGOMapView!
Oder:
class MainViewController: UIViewController, MKMapViewDelegate, UITableViewDelegate, UITableViewDataSource, CLLocationManagerDelegate {
@IBOutlet weak var mapView: MKMapView!
let regionRadius: CLLocationDistance = 1000
var usrLocation: CLLocationManager!
var annotationView: MKAnnotationView!
override func viewDidLoad() {
super.viewDidLoad()
if (CLLocationManager.locationServicesEnabled()) {
usrLocation = CLLocationManager()
usrLocation.delegate = self
usrLocation.requestAlwaysAuthorization()
usrLocation.requestLocation()
}
}
Dann in meinem Drehbuch:
(Ich habe mehr als eine Funktion in meinem mapView. Ich weiß nicht, ob die Funktionen dort Sache für die eine oder andere Weise ist?)
Vielen Dank. Gilt das jedes Mal? Oder gibt es Kontexte, in denen der zweite Weg zum Code der beste ist? –
Sie können für den zweiten Weg gehen, wenn Sie nicht viel Code auf der Karte haben und Sie Kartenansicht auf Einzelansicht-Controller verwenden. In diesem Fall ist es nicht falsch, den zweiten Ansatz zu verwenden, da Sie sicher sein werden, wo Sie die Kartenansicht verwendet haben, und Sie können leicht debuggen. Damit werden Ihre Zweifel ausgeräumt. –