ios - 根据选择的行将数据从 UITableView 传递到另一个 ViewController

标签 ios swift uitableview uitextview

我有两个 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/

相关文章:

ios - 根据当前显示的 UICollectionViewCell 更改 UISegmentedControl.selectedIndex 值

ios - block 隐式保留 'self' ; - 但这是有意的行为吗?

arrays - 如何找到数组中每个项目的字符数

iphone - 动画表格 View 部分标题

ios - Swift - 不可转换为 'NativeObject'

ios - Swift:iPhone 上的安全区域

swift - 我应该如何决定我的函数是否应该返回可选或隐式解包可选?

ios - 使用 CocoaPods 安装 MapBoxNavigation 后出现 Swift 编译器错误问题

ios - 自动布局在自定义 UITableViewCell 中被忽略

ios - 使用 IOS,有没有办法制作包含行和列的适当表格?