2015-10-17 7 views
6

मैं आईपैड के लिए अपने पहले स्विफ्ट एप्लिकेशन पर काम कर रहा हूं। इस प्रकार मेरे पास नीचे टूलबार में एक बटन के साथ एक मूल मानचित्रदृश्य है, जिसे मैं रीफ्रेश करना चाहता हूं और क्लिक करने के बाद उपयोगकर्ता स्थान पर ध्यान केंद्रित करना चाहता हूं।मानचित्र बटन रीफ्रेश स्थान

import UIKit 
import MapKit 
import CoreLocation 

class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate { 

var location: CLLocation! 
let locationManager = CLLocationManager() 

@IBOutlet weak var mapView: MKMapView! 
@IBOutlet weak var refresh: UIBarButtonItem! 

@IBAction func refresh(sender: AnyObject) { 

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

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

    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 

} 

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

// location delegate methods 

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: 1, longitudeDelta: 1)) 

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

    self.locationManager.stopUpdatingLocation() 

} 

func locationManager(manager: CLLocationManager, didFailWithError error: NSError) 
{ 
    print("Error code: " + error.localizedDescription) 
} 

}

मैं कैसे ताज़ा करें बटन यह करने के लिए प्राप्त कर सकते हैं:

वर्तमान में मैं इस कोड है? मैं वास्तव में कुछ मदद की जरूरत के रूप में मैं स्विफ्ट/xcode :)

धन्यवाद करने के लिए नया हूँ

+0

मुझे यकीन नहीं है कि मैं आपको सही तरीके से समझ गया हूं। आप केवल नियंत्रक को कार्रवाई क्यों नहीं करते हैं और अपनी सेवाओं/प्रबंधकों में डेटा रीफ्रेश करते हैं? – razor118

+0

मैं यह क्षमा करने के बारे में कैसे जाऊं? मैं वास्तव में xcode के लिए नया हूं :(@ razor118 मैं – Oscar

उत्तर

5

जैसा कि @ ओरखान ने कहा था कि आप इसे इस तरह से कर सकते हैं।

यदि आप कार्रवाई करना चाहते हैं तो आप कंट्रोलर देखने के लिए बस सरल ctrl-drag और "एक्शन" चुनें।

enter image description here

उसके बाद आप हैंडलर के लिए कोड जोड़ सकते हैं।

var location: CLLocation! 
    @IBAction func refreshLocation(sender: AnyObject) { 

    let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude) 
    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)) 

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

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 
    self.location = locations.last as CLLocation 
} 
+0

दबाए जाने पर नवीनतम स्थान को रीफ्रेश करने के लिए रीफ्रेश बटन की कामना करता हूं हाय, इसे आजमाएं, लेकिन मुझे पहली पंक्ति में "अनसुलझा पहचान 'स्थानों का उपयोग मिलता है :(यह क्यों हो रहा है? आपकी मदद के लिए धन्यवाद – Oscar

+0

अपडेट किया गया। स्थान प्रबंधक में आप केवल अंतिम स्थान सहेजते हैं। बटन कार्रवाई में हमने मानचित्र के लिए अंतिम स्थान सेट किया है। – razor118

+0

मैं यह कोड कहां रखूं? "Func locationManager (प्रबंधक: CLLocationManager, didUpdateLocations स्थानों: [CLLocation ]) { "समारोह? धन्यवाद फिर से – Oscar

1

आप इस समारोह के साथ अपने स्थान को अपडेट कर सकते हैं:

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

    let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)   
    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)) 

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

अपने लक्ष्य iOS 8 है, तो आप की जरूरत है अपनी Info.plist में NSLocationAlwaysUsageDescription कुंजी जोड़ने के लिए।

3

निम्नलिखित 3 लाइन कोड का प्रयास करें:

@IBAction func refresh(sender: AnyObject) { 
    mapView.setCenterCoordinate(mapView.userLocation.coordinate, animated: true) 
} 

संपादित

चेक निम्नलिखित:

आप विधि की बाईं ओर डॉट देख सकते हैं?

enter image description here

मैं अपने कनेक्शन निरीक्षक देखना चाहते हैं। ताज़ा करें बटन और refresh विधि सही ढंग से जुड़े हुए हैं?

enter image description here

+0

अभी भी कोई बदलाव नहीं :( – Oscar

संबंधित मुद्दे