我正在制作ios应用。请查看下面的表格视图。
如果单击添加(+)按钮,则可以在每个文本字段中添加ENG字及其含义韩文(KOR)。
填写文本字段并单击“保存”按钮(位于右上角,“저장”)后,将添加如下图所示的单词。
例如,ENG是无穷无尽的,意义(KOR)是“끝없는”。
而且,我想使用UIReferenceLibraryViewController。 如果我单击列表的单元格,我想显示其字典。
@IBAction func viewDictionary(_ sender: UITapGestureRecognizer) {
let engDictionaryWord = **engListWord**
let ViewController = UIReferenceLibraryViewController(term: engDictionaryWord)
self.present(ViewController, animated: true, completion: nil)
}
我想使用这种方法。 但是,我不知道如何在 engListWord 中保存我的ENG输入。
在pic2的swift文件(addWordViewController.swift)中,有这样的prepare()方法。
// 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)
}
addWordViewController.swift中的和viewDidLoad()方法
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.
}
我不知道我必须使用哪个变量。 我的项目中有其他swift文件,如果我误解了上面的代码,请告诉我!我会立即编辑我的问题。
Main.Storyboard
如果我使用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 :(得分:0)
我认为要采用的方法是在WordTableViewController中使用UITableViewDelegate
方法didSelectRowAtindexPath
(如果这是带有表视图的类)。
在tableViewController中,gestureRecognizer似乎不是你想要的东西,因为它在委托方法中有很好的构建来注册用户按下。因此,请使用以下内容替换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后随意使用它:=)