用户添加了一个viewController
,其中tableView
包含所有俱乐部。用户可以使用tableViewCells
功能对moverowat
重新排序。如果他选择俱乐部,则他与俱乐部的所有成员一起进入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
。我认为这是因为我没有情节提要。但是,是否有可能与tableViewCell
发生两次冲突?还是应该解决这个问题?
答案 0 :(得分:1)
不要使用Interface Builder的segue。手动实例化目标视图控制器,以便您可以控制要转换到的目标控制器:
选择EditClubViewController
并为其指定一个情节提要ID。对MemberViewController
做同样的事情。
在第一个视图控制器中:
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)
}