2016-09-26 6 views
16

चेतावनी माइग्रेशन के बाद देता है मैं निम्न विधि है:स्विफ्ट 3 UITableView डेटा स्रोत विधि viewForHeaderInSection स्विफ्ट 3 करने के लिए

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {} 

और यह मुझे चेतावनी देता है

उदाहरण विधि 'tableView (tableView: viewForHeaderInSection:) 'लगभग वैकल्पिक आवश्यकता से मेल खाता है' तालिका दृश्य (_: titleForHeaderInSection :) ' प्रोटोकॉल' UITableViewDataSource '

फिक्स-यह विधि को निजी बनाने या @ "nonobjc" एनोटेशन जोड़ने की पेशकश करता है। चेतावनी को कैसे हल करें?

+0

इस समस्या में भी चल रहा है। फिक्स-यह भी सुझाव दिया गया कि मैं इसे चेतावनी चुप करने के लिए निजी चिह्नित करता हूं। – Mike

+2

आप ऐसा नहीं कर सकते हैं, अन्यथा, इस विधि को – Jacky

उत्तर

23

मेरे पास अपने ऐप पर समान चेतावनियां थीं। वास्तव में 2 समस्याएं थीं। मैंने विधि हस्ताक्षर में अंडरस्कोर जोड़कर या विधि को सही विस्तार पर ले जाकर सभी चेतावनियों को ठीक किया है, जो प्रोटोकॉल लागू करता है जहां से विधि आती है।

मुझे लगता है कि आपकी समस्या दोनों का संयोजन हो सकती है।

और अधिक विस्तार में:

1) आप से पहले "अंडरस्कोर" चरित्र जोड़ना भूल सकता है "tableView: ...", स्विफ्ट 2.3 उस में यह स्विफ्ट 3 (में एक भिन्न तरीके से करता है जो कोई फर्क नहीं पड़ता)। यह करने के लिए

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 

:: तो क्या आप इसे बदलना चाहिए

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 

2) विधि tableView(_:viewForHeaderInSection:)UITableViewDelegate प्रोटोकॉल से है, लेकिन संकलक की तरह इस बारे में पता नहीं है कि यह लग रहा है विधि-यह केवल जानता है UITableViewDataSource से विधियों में से और आपको उनमें से एक (tableView(_:titleForHeaderInSection:)) की सलाह देने का प्रयास करता है। तो आप या तो UITableViewDelegate को लागू नहीं करते हैं या आप करते हैं, लेकिन किसी अन्य एक्सटेंशन में शायद?

+7

नहीं कहा जाएगा असल में समस्या का कारण यह है कि विधि प्रतिनिधि के बजाय डेटा स्रोत एक्सटेंशन में जोड़ा गया था। इस बारे में बताने के लिए शुक्रिया। –

+0

मेरे लिए वही जोड़ा गया 'UITableViewDelegate' –

+1

2) संकेत ने इसे मेरे लिए काम किया। आश्चर्यजनक है कि मैंने जो चेतावनी पढ़ी है उसे चुप करने के लिए कितने अलग "चाल" ... बस UITableViewDataSource के अनुपालन के लिए विधियों को एक एक्सटेंशन में ले जा रहे हैं और दूसरों को UITableViewDelegate के अनुपालन के विस्तार में विस्तारित किया गया है और यहां तक ​​कि @obj() सजावट अप्रचलित भी बनाई गई है। धन्यवाद। –