gpt4 book ai didi

ios - indexPathForSelectedRow 返回 nil 但未取消选择

转载 作者:搜寻专家 更新时间:2023-11-01 06:34:43 28 4
gpt4 key购买 nike

在我的 prepareForSegue 方法中,我尝试使用点击的 TableView 单元格来为我的目标 View Controller 设置数据,但应用程序崩溃并指出

fatal error: unexpectedly found nil while unwrapping an Optional value.

我不明白为什么 indexPathForSelectedRow 会返回 nil。我查看了与我的问题类似的回复,他们认为问题可能是取消选择所选行,但我认为这不是我的问题。有谁知道它可能是什么?

class ActivityTableViewController: UITableViewController {

var activities: [Activity] = []

func generateActivities() {
let sidecar = Activity(name: "Sidecar Doughnuts", type: "Food", area: "Santa Monica", address: "631 Wilshire Blvd. Santa Monica, California 90401")
activities.append(sidecar)

let roseCafe = Activity(name: "Rose Cafe", type: "Food", area: "Venice", address: "220 Rose Ave, Venice, CA 90291")
activities.append(roseCafe)

let milkShop = Activity(name: "The Milk Shop", type: "Food", area: "Beverly Hills", address: "7290 BEVERLY BLVD. LOS ANGELES, CA 90036")
activities.append(milkShop)

let brentwoodMart = Activity(name: "Brentwood Mart", type: "Food", area: "Brentwood", address: "225 26th St, Santa Monica, CA 90402")
activities.append(brentwoodMart)
}

override func viewDidLoad() {
super.viewDidLoad()
generateActivities()
}

override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return activities.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cellIdentifier = "ActivityCell"
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier) as! ActivityCellTableViewCell

let individualActivity = activities[indexPath.row]

cell.activityCellTitle.text = individualActivity.name

return cell
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier != "showActivityDetails" { return }

if let dest = segue.destination as? ViewController, let indexPath = tableView.indexPathForSelectedRow {
dest.activityTypeLabel.text = activities[(indexPath as NSIndexPath).row].type
dest.areaLabel.text = activities[(indexPath as NSIndexPath).row].area
dest.addressLabel.text = activities[(indexPath as NSIndexPath).row].address
}
}
}

最佳答案

您正在安全地展开所选行的 indexPath,所以我认为这不是您遇到崩溃的原因。我猜你忘记为你试图在 ViewController 上设置的那 3 个标签之一连接一个 @IBOutlet,或者如果你没有创建它们使用 Storyboard 然后它们可能不会初始化,直到 viewDidLoad 或其他生命周期方法之一。

关于ios - indexPathForSelectedRow 返回 nil 但未取消选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42799062/

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