2016-08-29 13 views
10

मुझे नहीं पता कि मेरे कोडिंग में क्या गलत है। मैंने ट्यूटोरियल का पालन करने की कोशिश की लेकिन एक ही त्रुटि होती है।प्रोटोकॉल के अनुरूप नहीं है UIPickerViewDataSource

त्रुटि:

import UIKit 

let characters = ["Jaja Bink", "Luke", "Han Solo", "Princess Leia"]; 

let weapons = ["LightSaber", "Pistol", "Keris"]; 

class FourthViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { 

    @IBOutlet weak var doublePicker: UIPickerView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

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

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     return 2 
    } 


    func pickerView(pickerView: UIPickerView, 
        titleForRow row: Int, 
           forComponent component: Int) -> String? { 

     if component == 0 { 
      return characters[row] 
     } else { 
      return weapons[row] 
     } 

    } 

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int? { 
     if component == 0 { 
      return characters.count 
     } else { 
      return weapons.count 
     } 
    } 

} 
+0

कृपया अपने प्रश्न का "हल" न जोड़ें। अगर कोई उत्तर आपकी समस्या हल करता है, तो उत्तर को स्वीकार के रूप में चिह्नित करें; यदि आप अपनी समस्या का समाधान स्वयं करते हैं तो आप अपना उत्तर भी पोस्ट कर सकते हैं। धन्यवाद। – Moritz

उत्तर

4

क्योंकि अपने आवश्यक प्रतिनिधि विधि सही नहीं है:

Type 'FourthViewController' does not conform to protocol 'UIPickerViewDataSource'

यहाँ मेरी कोड है।

इस के साथ यह बदलें:

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 

    if component == 0 { 
     return characters.count 
    } else { 
     return weapons.count 
    } 
} 

आपका प्रतिनिधि विधि रिटर्न Int? जो सही नहीं है। ,

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int 
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
+1

हे भगवान! मुझे अचानक मेरे कोडिंग func pickerView पर महसूस हुआ (pickerView: UIPickerView, numberOfRowsInComponent घटक: Int) -> Int मैं अतिरिक्त प्रश्न चिह्न '?' डालता हूं int के अंत में अब मुद्दा हल हो गया। धन्यवाद! –

+1

अगर यह मदद करता है तो किसी भी उत्तर को स्वीकार करें .. :) –

0

आप इसे लागू करने के लिए है सुविधा नहीं होती।

प्रोटोकॉल

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
} 

प्रोटोकॉल की नवीनतम विधि के पदावनत विधि स्विफ्ट 3 में

func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    return 1 
} 

नोट: ही अन्य आवश्यक प्रोटोकॉल तरीकों के लिए सच। यानी

Deprecated:

func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int

Recent Version:

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int

+0

हे भगवान! मुझे अचानक मेरे कोडिंग func pickerView पर महसूस हुआ (pickerView: UIPickerView, numberOfRowsInComponent घटक: Int) -> Int मैं अतिरिक्त प्रश्न चिह्न '?' डालता हूं int के अंत में अब मुद्दा हल हो गया। धन्यवाद! –

23

प्रोटोकॉल UIPickerViewDataSource की विधि की पदावनत संस्करण की जगह आप के लिए Swift 3 सकता है काम करता है उपयोग कर रहे हैं:

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

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