2016-08-29 15 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?を返します。あなたはあなたのためにSwift 3できた作品を使用している場合、

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の方法で非推奨バージョンの交換:あなたはそれを実装する必要が

関連する問題