2017-07-27 15 views
0

私は素早く新しいです。私は別のクラスの名前の配列を使用してpickerviewを再作成しようとしています。私はこのクラスを持っています。メモをつくるノートと名前/タイトルがあります。その名前/タイトルにアクセスしてピッカービューに入れようとしています。他のviewControllerからの情報へのアクセス

import UIKit 
var allNotes: [Note] = [] 
var currentNoteindex: Int = -1 
var noteTable: UITableView? 
let kAllNotes:String = "notes" 

class Note: NSObject 
{ 
    var date:String 
    var note:String 
    var name:String 

    override init() 
    { 
     date = NSDate().description 
     name = "" 
     note = "" 
    } 

    func dictionary() -> NSDictionary 
    { 
     return ["note": note, "date": date, "name": name] 
    } 

私は2つの異なるピッカービューを持っていますが、1つは作品の名前で動作しません。

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    fileNamePicker.dataSource = self 
    fileNamePicker.delegate = self 

    gradePicker.dataSource = self 
    gradePicker.delegate = self 

} 


func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
{ 
    if pickerView == gradePicker 
    { 
     return grades.count 
    } 
    else 
    { 
     return allNotes.count 
    } 

} 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? 
{ 
    if pickerView == gradePicker 
    { 
     return grades[row] 
    } 

    else 
    { 
     //This is where the Problem is, but I don't know how to fix it. 
     let nameFiles = allNotes[currentNoteindex].name 
     return nameFiles[row] 
    } 

} 

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

'let nameFiles = allNotes [currentNoteindex] .name'はすでに' String'です。どうしてあなたはvarを返さないのですか? – Ryan

+0

ええ、私はそれを試みましたが、それも動作しません。 –

+0

「うまくいかない」とはどういう意味ですか?ここに詳細を追加できますか? – Ryan

答えて

0

nameFilesはメモから名前にアクセスしています。 nameFilesは配列ではないため、

nameFiles[row]は機能しません。

文字列を返す場合は、単にreturn nameFilesを実行します。最初に、nameFilesが実際に値を持っていることを確認してください!

+0

ノートクラスの名前変数の設定場所を確認する。 – williej926

+1

ありがとうございます –

0

allNotes配列が空であるようです。あなたはinitilaizeを持っていますが、オブジェクトを追加していないようです。このように追加してみてください、あなたのViewControllerクラスでNoteクラス

init(_ date: String, note: String, name: String) { 
     self.date = date 
     self.note = note 
     self.name = name 
    } 

initiliazeメソッドを作成します。次に、ピッカービューメソッドの内部にアクセスできます。 -

//You can append by doinf iteration based on your data 
allNotes.append(Note(date: "value1", note: "Value", name: "name")) 
関連する問題