2014-09-21 6 views
12

मैंUITableView reloadData() दिखाया गया रीफ्रेश नहीं होता कोशिकाओं

class StationViewController : 
    UITableViewController, UITableViewDelegate, UITableViewDataSource { 
    @IBOutlet var stationTableView: UITableView! 

है मेरी डेटा स्रोत में अद्यतन डेटा और कर

stationTableView.reloadData() 

इस तुरंत स्क्रीन पर दिखाई नहीं दे रहा है। यदि मैं स्क्रॉल करता हूं, झुकाता हूं या कुछ और करता हूं जो स्क्रीन के पुनर्निर्मित करता है तो अद्यतन कोशिकाएं दिखाई देती हैं। मैं पुष्टि कर सकता है कि UITableView अद्यतन करने के लिए किया

println("\(stationTableView.visibleCells())") 

जो उम्मीद कोशिकाओं प्रिंट को फोन करके।

बाकी सेटअप एक UINavigationController है जिसमें मेरे StationViewController रिश्ते के रूप में है। stationViewController के लिए आईबीओलेटलेट स्टोरीबोर्ड फ़ाइल में UITableView से जुड़ा हुआ है।

मुझे अपने अपडेट को तत्काल दिखाई देने के लिए स्क्रीन के "पुनर्निर्मित" की आवश्यकता होती है। मैं उसको कैसे करू?

+3

शायद आप मुख्य स्टेशन से 'stationTableView.reloadData()' को कॉल नहीं कर रहे हैं। – Artem

उत्तर

31

आर्टम के लिए धन्यवाद, मुझे लगा कि मुझे मुख्य थ्रेड पर reloadData() को कॉल करने की आवश्यकता है। इस तरह मैंने हल किया है कि:

func refreshUI() { 
    dispatch_async(dispatch_get_main_queue(),{ 
     self.stationTableView.reloadData() 
    }); 
} 
+0

मैंने कोशिश की और "अपेक्षित अभिव्यक्ति" त्रुटि त्रुटि मिली। Dispatch_async() क्या है? – Ryan

+2

धन्यवाद, इससे मदद मिलती है! यहां स्विफ्ट 3 'समारोह refreshUI() { DispatchQueue.main.async { self.tableView.reloadData() } } के लिए कोड है' – pulp

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