我有两个 ViewController,一个包含 UITextView,另一个包含 UITableView。我希望我的应用程序将所选行的数据从包含 UITableView 的 SecondViewController 传递到第一个 ViewController 中的 UITextView,具体取决于用户选择的行。我在firstViewController中使用下面的代码(只是为了给你一些历史记录,我所拥有的是firstViewController内的UITextView,用户可以选择输入自定义值或施加长按手势,然后显示一个弹出窗口,其中包含我想要实现的是,当从包含 UItableView 的 popoverView 中选择一行时,popoverView 将关闭,并且表中突出显示的值将显示在第一个ViewController 中的 UITextView 中):
class ViewController: UIViewController, UITextViewDelegate, UIPopoverPresentationControllerDelegate {
@IBOutlet weak var indicativeDesignWorkingLifeTextView: UITextView!
var textInsideIndicativeDesignWorkingLifeTextView: String? = nil
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
indicativeDesignWorkingLifeTextView.text = textInsideIndicativeDesignWorkingLifeTextView
indicativeDesignWorkingLifeTextView.attributedText = placeholderTextInIndicativeDesignWorkingLifeTextView
}
}
以及第二个ViewController中的以下代码:
@objc func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
func prepare(for segue: UIStoryboardSegue, sender: UITableViewCell?) {
let toFirstViewController = segue.destination as! ViewController
// Pass the selected object to the new view controller.
if let indexPath = self.indicativeDesignWorkingLifeTable.indexPathForSelectedRow {
let selectedRow = years[indexPath.row]
toFirstViewController.textInsideIndicativeDesignWorkingLifeTextView = selectedRow
}
}
}
但是,当我运行模拟器并从表中选择一行时,firstViewController 中的 UITextView 内没有任何反应?所发生的只是显示第一个ViewController。非常感谢任何帮助。
谢谢, 沙迪。
最佳答案
将您的代码更新为:
@objc func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.performSegue(withIdentifier: "<set identifier String>", sender: indexPath)
}
func prepare(for segue: UIStoryboardSegue, sender:Any?) {
let toFirstViewController = segue.destination as! ViewController
// Pass the selected object to the new view controller.
if let indexPath = sender as? IndexPath {
print("indexPath - \(indexPath)")
let selectedRow = years[indexPath.row]
print("selectedRow - \(selectedRow)")
toFirstViewController.textInsideIndicativeDesignWorkingLifeTextView = selectedRow
}
}
关于ios - 根据选择的行将数据从 UITableView 传递到另一个 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46080668/