2017-09-25 1 views
0

ios 앱을 만들고 있습니다. 아래의 내 테이블보기 이미지를보십시오. 당신이 (+) 버튼을 추가 클릭하면 대리인을 사용하여 변수에 사용자의 입력을 저장하는 방법은 무엇입니까?

enter image description here

, 각 텍스트 필드에서 ENG 단어, 한국 (KOR)에서 그 의미를 추가 할 수 있습니다.

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의 신속한 파일 (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 이동 방법은 UITableViewDelegatedidSelectRowAtindexPath 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... 
} 

이 설정되면 당신이 SEGUE 수행 한 후 원하는대로 사용할 수 있습니다 : =를

+0

UIReferenceLibraryViewController라는 새로운 파일을 만들어야할까요? –

+0

새로운 코코아 터치 클래스 이름 UIReferenceLibraryViewController를 만들었습니다. 하지만 ... 새로운 오류가 있습니다 ... –

+0

WordTableViewController.swift : 80 : 42 : 'String'을 입력 할 때 'Word'유형의 값을 할당 할 수 없습니다. –

관련 문제