我已经建立了一个侧边菜单,当你点击一个条形按钮项时弹出, 单击其中一个菜单选项后,视图控制器将使用正确的数据加载,但条形按钮项目将消失。所以我做了一些研究 我发现问题是我的segue目的地,我的segue目的地是视图控制器,而不是导航控制器,所以我尝试改变我的代码结束:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let cell = sender as? UITableViewCell{
let i = tableView.indexPath(for: cell)!.row
if segue.identifier == "viewController"{
let nav = segue.destination as! UINavigationController
let addEventViewController = nav.topViewController as! ViewController
addEventViewController.varView = i
}
}
}
现在我收到了这个错误:
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
答案 0 :(得分:0)
请更新您的代码,如下所示。 这里 sharedAppdelegate()是appdelegate的共享实例
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let cell = sender as? UITableViewCell{
let i = tableView.indexPath(for: cell)!.row
if segue.identifier == "viewController"{
let yourDestinationController = segue.destination as! ViewController
let nav = UINavigationController.init(rootViewController: yourDestinationController)
let win = AppDelegate.sharedAppdelegate().window
win.rootViewController = nav
win?.makeKeyAndVisible()
addEventViewController.varView = i
}
}
}
在 Appdelegate 中添加以下方法
static func sharedAppdelegate() -> AppDelegate
{
return UIApplication.shared.delegate as! AppDelegate
}
答案 1 :(得分:0)
我认为问题在于您从BackTableVC调用segue并且导航控制器没有segue,只有位于故事板右下方的控制器。您必须在RevealViewController上执行segue或重新链接segue,以便它通向导航控制器。