gpt4 book ai didi

执行 segue 后 Swift 3 解散

转载 作者:行者123 更新时间:2023-11-28 12:17:09 27 4
gpt4 key购买 nike

我有三个 Controller 与 segues 相连。 Controller 一是 MyNotif, Controller 二是 AddNotif, Controller 三是 SelectInterval。

我从 Controller 2 转到 Controller 3,然后再回到 Controller 2。这是因为在 Controller 3 中,我将从 TableView 中选择一个值(字符串),该值(字符串)将插入到 Controller 2 的字段中。

当执行从 3 到 2 的 segue 时, Controller 不会被解除。这意味着如果我从 Controller 2 按下后退按钮(我不使用导航 Controller ,后退按钮是一个简单的按钮。这是代码:)

@IBAction func backBtnPressed(_ sender: Any) {
dismiss(animated: true, completion: nil)
}

我将降落在 Controller 3 而不是 Controller 1。

总而言之,我正在努力实现这一目标:

从 Controller 1 我转到 Controller 2。从这里我可以转到 Controller 3,选择我需要的字符串,执行 segue,返回到 Controller 2(直到这里一切正常)。一旦回到 Controller 2,如果我点击后退按钮,我想回到 Controller 1(现在发生的是我回到 Controller 3)。

有点复杂的解释......希望它有点清楚。

enter image description here

这是我的转场代码:添加通知:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "SelectRepeatInterval" {
if let destination = segue.destination as? SelectRepeatIntervalVC {
destination.selectedRepeatingInterval = repeatingInterval
}
}
}

选择间隔:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow!
let currentCell = tableView.cellForRow(at: indexPath)! as! SelectRepetaIntervalCell
selectedInterval = currentCell.repeatIntervalLbl.text!
performSegue(withIdentifier: "IntervalSelected", sender: self)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "IntervalSelected" {
if let destination = segue.destination as? AddNotificationVC {
destination.repeatingInterval = selectedInterval
}
}
}

最佳答案

您正在寻找的是 presentingViewController https://developer.apple.com/documentation/uikit/uiviewcontroller/1621430-presentingviewcontroller

if let destination = self.presentingViewController as? AddNotificationVC {
destination.repeatingInterval = selectedInterval
}
dismiss(animated: true, completion: nil)

完整代码如下

tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
// Get Cell Label
let currentCell = tableView.cellForRow(at: indexPath)! as! SelectRepetaIntervalCell
selectedInterval = currentCell.repeatIntervalLbl.text!
if let destination = self.presentingViewController as? AddNotificationVC {
destination.<your textfield name>.text = selectedInterval
}
dismiss(animated: true, completion: nil)
}

关于执行 segue 后 Swift 3 解散,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46075378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com