2017-09-25 6 views
0

私はiosアプリを作っています。下の私のテーブルビュー画像を見てください。デリゲートを使用して変数にユーザーの入力を保存するにはどうすればよいですか?

enter image description here

あなたは(+)ボタンを追加]をクリックした場合、あなたはそれぞれのテキストフィールドに韓国語(KOR)にENGの単語とその意味を追加することができます。

enter image description here

(それが、右上部にあり、「저장」)テキストフィールドを充填し、保存ボタンをクリックした後、単語は以下の画像のように追加されます。

word is added

例えば、ENGは無限大ですと意味(KOR)は "끝없는" です。

そして、私はUIReferenceLibraryViewControllerを使いたいと思います。 リストのセルをクリックすると、その辞書が表示されます。

@IBAction func viewDictionary(_ sender: UITapGestureRecognizer) { 

    let engDictionaryWord = **engListWord** 
     let ViewController = UIReferenceLibraryViewController(term: engDictionaryWord) 
     self.present(ViewController, animated: true, completion: nil) 

} 

このメソッドを使用します。 しかし、私はENG入力をengListWordに保存する方法を知らない。

pic2のswiftファイル(addWordViewController.swift)には、このようなprepare()メソッドがあります。 addWordViewController.swift

override func viewDidLoad() { 
    super.viewDidLoad() 

    engTextField.delegate = self 
    korTextField.delegate = self 

    // Set up views if editing an existing Word. 
    if let word = word{ 
     engTextField.text = word.eng 
     korTextField.text = word.kor 
    } 

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

// This method lets you configure a view controller before it's presented. 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    super.prepare(for: segue, sender: sender) 

    // Configure the destination view controller only when the save button is pressed. 
    guard let button = sender as? UIBarButtonItem, button === saveButton else { 
     os_log("The save button was not pressed, cancelling", log: OSLog.default, type: .debug) 
     return 
    } 

    let eng = engTextField.text ?? "" 
    let kor = korTextField.text ?? "" 

    // Set the meal to be passed to WordTableViewController after the unwind segue. 
    word = Word(eng:eng, kor:kor) 
} 

とのviewDidLoad()メソッドは、私は私が使用する必要がどの変数かわかりません。 私のプロジェクトには他の素早いファイルがあります。上記のコードを誤ってアップロードした場合は教えてください!すぐに私の質問を編集します。

enter image description here

Main.Storyboard

enter image description here

私はGestureRecognizerを使用している場合、私はこのコードを作ったが、私はそれが正しいと知っていない...

@IBAction func MyDictionary(_ sender: UITapGestureRecognizer) { 

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     performSegue(withIdentifier: "viewDictionary", sender: indexPath) 
    } 

    func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     // I just made this identifier up, but create one yourself in the storyboard 
     if segue.identifier == "viewDictionary" { 
      // Define your vc 
      let libController = segue.destination as! UIReferenceLibraryViewController 

      // Define indexPath 
      let indexPath = sender as! IndexPath 

      // Set value in destination vc 
      libController.engWord = words[indexPath.row].eng 
     } 
    } 
} 
+0

私は実際に質問を理解していません。英語と韓国語の両方を含むテーブルビューセルを押すと、単語を保存しますか? – matiastofteby

+0

@matiastoftebyテーブルビューのセルを押すと、UIReferenceLibraryViewControllerを使用して辞書ページを表示したいとします。 UIReferenceLibraryViewControllerを使用するには、ENGは必要なものです。 新しい単語を追加すると、ENGテキストを保存して、それをUIReferenceLibraryViewControllerコードで使用したいと思います。しかし、私はENGのテキストを保存することはできません。 UIReferenceLibraryViewControllerを使用するには、各ENGテキストを** engListWord **に保存する必要があります。 –

+0

@matiastofteby要するに、各テーブルビューセルの英語のテキストを保存します。 –

答えて

0

I移動方法は、UITableViewDelegateメソッドdidSelectRowAtindexPathをWordTableViewControllerで使用することです(その 'テーブルビューのクラス)。

gestureRecognizerは、ユーザーのプレゼンテーションを登録するデリゲートメソッドでうまく構築されているため、tableViewControllerに必要なもののようには見えません。したがって、次のようにあなたのviewDictionary(_ :)機能を置き換える:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    performSegue(withIdentifier: "viewDictionary", sender: indexPath) 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    // I just made this identifier up, but create one yourself in the storyboard 
    if segue.identifier == "viewDictionary" { 
     // Define your vc 
     let libController = segue.destination as! UIReferenceLibraryViewController 

     // Define indexPath 
     let indexPath = sender as! IndexPath 

     // Set value in destination vc 
     libController.engWord = yourArrayOfEngWords[indexPath.row]  
    } 
} 

これは、あなたが押されているセルのあなたのENGワードを取得し、あなたが、あなたのUIReferenceLibraryViewControllerに定義する属性「engWord」に保存されます。

class UIReferenceLibraryViewController(){ 
    var engWord: String = "" 

    // Rest your class properties and functions here... 
} 

セグエが行われた後、あなたが好きなようにあなたがそれを使用することができます設定されたら、:=)

+0

UIReferenceLibraryViewControllerという名前の新しいファイルを作成する必要がありますか? –

+0

新しいココアタッチクラス名UIReferenceLibraryViewControllerを作成しました。しかし、新しいエラーがあります... –

+0

WordTableViewController.swift:80:42: '文字列'を入力するための 'Word'タイプの値を割り当てることができません –

関連する問題