通过按钮替换 ViewController,线程 1:EXC_BAD_INSTRUCTION
Posted
技术标签:
【中文标题】通过按钮替换 ViewController,线程 1:EXC_BAD_INSTRUCTION【英文标题】:Replace ViewController via Button, Thread 1: EXC_BAD_INSTRUCTION 【发布时间】:2018-08-07 22:50:49 【问题描述】:我想将我的UITableViewController
替换为ViewController
,内部带有UITableView
。为此,我使用以下代码:
@objc func buttonAction(sender: UIButton!)
let newController = storyboard?.instantiateViewController(withIdentifier: "VcId") as! JobTableViewController
self.navigationController?.present(newController, animated: true, completion: nil)
但我总是在第二行得到这个错误
线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)
【问题讨论】:
上传你的demo到github 添加警戒检查以确保故事板实际实例化了您的 VC 或它返回 nil 用下面的代码让它工作:self.navigationController?.popToRootViewControllerAnimated(true) 【参考方案1】:你应该这样做:
guard let newController = storyboard?.instantiateViewController(withIdentifier: "VcId") as? JobTableViewController else return
self.navigationController?.present(newController, animated: true, completion: nil)
这个错误可能是因为在storyboard中找不到viewcontroller,你可能给了错误的ID。
【讨论】:
以上是关于通过按钮替换 ViewController,线程 1:EXC_BAD_INSTRUCTION的主要内容,如果未能解决你的问题,请参考以下文章
通过在另一个 ViewController 中按下按钮/在另一个 ViewController 中引用 UITableView 创建 UITableViewCell
Swift - 通过点击 ScrollView 内的 ViewController 内的按钮来滚动 UIScrollView
如何通过 segue 到下一个 ViewController 使“查看全部”按钮显示数据?