gpt4 book ai didi

ios - 禁用与 segue 的文本字段交互

转载 作者:行者123 更新时间:2023-11-28 13:53:08 25 4
gpt4 key购买 nike

我想在用户点击 tableview 的行并应用 segue 时禁用文本字段的用户交互。我哪里错了?当我在 tableview 中选择行时,出现“线程 1: fatal error :在展开可选值时意外发现 nil”错误。

这是我的 ViewController 类及其必要的功能

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.selectedTrip = dateArray[indexPath.row]
performSegue(withIdentifier: "toDetailsVC", sender: self)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toDetailsVC" {
let destinationVC = segue.destination as! detailsViewController
destinationVC.kmField.isUserInteractionEnabled = false
}
}

和kmField在细节上VC就像

@IBOutlet weak var kmField: UITextField!

最佳答案

调用 prepareForSegue 时, View 尚未从 Storyboard 中加载,因此您尝试访问隐式展开的可选 kmField 时会遇到 nil.

直接从外部访问类的内部结构(例如文本字段)通常不是一个好主意。

我建议您添加一个 bool 属性,比如 isEditable,然后您可以在 viewDidLoad 中使用它来设置您的 View Controller :

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destinationVC = segue.destination as? DetailsViewController
destinationVC.isEditable = false
}
}

顺便说一下,按照惯例,您的 View Controller 类应该是 DetailsViewController

class DetailsViewController {

var isEditable = true
@IBOutlet private weak var kmField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
self.kmField.isUserInteractionEnabled = self.isEditable
}

关于ios - 禁用与 segue 的文本字段交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54300459/

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