快速,将数据从动态单元格行选择传递到弹出视图控制器

问题描述 投票:-1回答:2

我的问题是,是否有可能将数据从选定的表视图单元传递到其他视图控制器

第一个控制器中的表视图使用原型单元格

First view controller tableview cell prototype

第二个视图控制器还有另外3个标签,如下所示

Secon viewController preview

[我尝试了此处描述的内容:passing data,但是它没有用,并且给了我错误“ UIStoryboardPopoverPresentationSegueTemplate的占位符”,通过阅读this old thread top answer我可以理解这是因为我正在使用原型单元及其动态]]

我想要的是,每当用户选择一行时,第二个视图控制器就会填充此关系

字符串1→字符串4

字符串2→字符串5

字符串3→字符串6

到目前为止,我已经尝试了一些类似的事情:

     func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            tableView.deselectRow(at: indexPath, animated: true)
            let vc = storyboard?.instantiateViewController(identifier:  "secondVC") as! CalculadoraViewController
            present(vc, animated: true)
            let string4 = string4array[indexPath[1]]
            performSegue(withIdentifier: "secVC", sender: string4)            
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let vc = segue.destination as? CalculadoraViewController {
            vc.string4.text = (sender as! String)
        }
    }

弹出视图控制器代码:

class CalculadoraViewController: UIViewController {

    @IBOutlet weak var string4: UILabel!
    @IBOutlet weak var string5: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

我的问题是,是否有可能将数据从选定的表视图单元传递到其他视图控制器。第一个控制器中的表视图使用原型单元。第二个视图控制器...

ios swift tableview popover
2个回答
0
投票
如果要显示View-Controller,则无需执行segue:

0
投票
这是在didSelectRow中传递数据的方式>

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) let vc = storyboard?.instantiateViewController(identifier: "secondVC") as! CalculadoraViewController // here you use VC to pass data if let dataToPassString4 = string4array[indexPath.row], let dataToPassString5 = string5array[indexPath.row] { vc.string4.text = dataToPassString4 // passing string4 text vc.string5.text = dataToPassString5 // passing string5 text } present(vc, animated: true) }

© www.soinside.com 2019 - 2024. All rights reserved.