为 segue 做准备时的 Segue 特定值

Segue specific value in prepare for segue

现在我有 2 个按钮将文本字段数据从 vc1 转换为 vc2。我想让顶部按钮将文本字段中的任何内容转换为 vc2。我希望底部按钮能够转到下一个 vc。现在,两个按钮都将数据从文本字段转移到下一个 vc。

    import UIKit
class ViewController: UIViewController {
@IBOutlet var textfield: UITextField!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard let c2 = segue.destination as? twoViewController else {return}
    c2.ss = textfield.text
}}

class twoViewController: UIViewController {
var ss: String!
@IBOutlet var datalbl: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()
    datalbl.text = ss
}}

您可以通过两种方式处理此问题:

使用发送器并设置按钮的标签值

prepare(for:sender:) 中的 sender 是按下的按钮,因此您可以为您的 2 个按钮设置唯一的标签值,然后检查:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard let c2 = segue.destination as? twoViewController else {return}
    if (sender as? UIButton)?.tag == 1 {
        c2.ss = textfield.text
    }
}

设置 segue 的标识符并在 prepare(for:sender:)

中检查它们

因为你有两个 segue,点击 Storyboard 中的 segue 箭头并在 Attributes Inspector 中设置它们的标识符。您可以将顶部按钮的 segue 标识符设置为 "sendTextField",然后在 prepare(for:sender:):

中检查它
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard let c2 = segue.destination as? twoViewController else {return}
    if segue.identifier == "sendTextfield" {
        c2.ss = textfield.text
    }
}