gpt4 book ai didi

swift - 编辑为 true 或 false 时更改目标 viewController

转载 作者:行者123 更新时间:2023-11-28 05:56:53 27 4
gpt4 key购买 nike

我有一个 viewController 和一个包含所有俱乐部的 tableView,用户补充说。用户可以使用 moverowat 函数重新排序 tableViewCells。如果他选择了一个俱乐部,他会来到一个包含俱乐部所有成员的 tableView。现在我想实现这个能力,去另一个 viewController ,他可以在那里编辑单元格的内容。

我已经创建了这个,但现在它不起作用:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if tableViewClub.isEditing == true{
self.navigationController?.pushViewController(EditClubViewController() as UIViewController, animated: true)}
if tableViewClub.isEditing == false{
self.navigationController?.pushViewController(MemberViewController() as UIViewController, animated: true)
}
 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if !tableViewClub.isEditing {
guard let destination = segue.destination as? MemberViewController,
let selectedRow = self.tableViewClub.indexPathForSelectedRow?.row else {
return
}

destination.club = clubs[selectedRow]
}}

tableView.isEditing 时,会显示一个黑色背景的 viewController。当 !tableView.isEditing 时,显示此错误:Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value。我认为这是因为我没有 Storyboard 片段。但是,是否有可能从 tableViewCell 中获得两个 segue?或者我该如何解决这个问题?

最佳答案

不要使用 Interface Builder 的 segue。手动实例化目标 View Controller ,以便您可以控制要转换到的 View Controller :

界面生成器

选择 EditClubViewController 并为其指定 Storyboard ID。对 MemberViewController 执行相同的操作。

enter image description here

在代码中

在第一个 View Controller 中:

override func viewDidLoad() {
super.viewDidLoad()
// Turn this on so rows can be tapped during editing mode
tableView.allowsSelectionDuringEditing = true
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let destinationVC: UIViewController

switch tableView.isEditing {
case true:
// If your storyboard isn't named "Main.storyboard" then put the actual name here
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "editClubViewController") as! EditClubViewController
// do your setup....
destinationVC = vc
case false:
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "memberViewController") as! MemberViewController
// do your setup...
destinationVC = vc
}
self.navigationController?.pushViewController(destinationVC, animated: true)
}

关于swift - 编辑为 true 或 false 时更改目标 viewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51233643/

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