我有三个与segue连接的控制器。 控制器1是MyNotif,控制器2是AddNotif,控制器3是SelectInterval。
从控制器2我有一个segue到控制器3然后回到控制器2。 这是因为在控制器3中,我将从tableview中选择一个值(字符串),该值将插入控制器2的字段中。
当执行从3到2的segue时,控制器不会被解雇。这意味着如果从控制器2我按下后退按钮(我不使用导航控制器,后退按钮是一个简单的按钮。这里的代码是:)
@IBAction func backBtnPressed(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
我将降落在控制器3上,而不是控制器3上。
总结一下,我试图实现这个目标:
从控制器1我转到控制器2.从这里我可以进入控制器3,选择我需要的字符串,执行segue,返回控制器2(直到这里一切正常)。一旦回到控制器2上,我点击后退按钮我想回到控制器1上(现在发生的事情是我回到控制器3上)。
有点复杂的解释......希望它有点清楚。
这是我的segue代码: AddNotif:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "SelectRepeatInterval" {
if let destination = segue.destination as? SelectRepeatIntervalVC {
destination.selectedRepeatingInterval = repeatingInterval
}
}
}
SelectInterval:
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
}
}
}
答案 0 :(得分:2)
您正在寻找的是呈现ViewController 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)
}