我有一个launchscreen.storyboard和一个main.storyboard
在我的Main.storyboard中,Main storyboard有我的欢迎屏幕我还有另外两个视图控制器。
流是主流(情节提要)->项结果(VC)->项单一视图(VC)
从main到其中一个viewcontrollers,我执行以下操作。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let itemResults = storyboard.instantiateViewController(withIdentifier: "ItemResults") as! ItemResultsViewController
itemResults.itemDescriptionData = self.itemDescription.text!
self.present(itemResults, animated: false, completion: nil)
这将带我从Main到ItemResults,并传递一个字符串在ItemResults(VC)中,我有一个TableView我要做的是当你点击单元格时,它从单元格中收集信息,打开一个模式并在其中显示与被点击单元格相关的信息。
那个序列看起来是这样的
let storyboard = UIStoryboard(name: "ItemResults", bundle: nil)
let singleItemResult = storyboard.instantiateViewController(withIdentifier: "ViewSingleItem") as! ViewSingleItem
singleItemResult.theItemID = selectedItem.itemID
self.present(singleItemResult, animated: true, completion: nil)
然后我得到以下错误。
'在捆绑包nsbundle中找不到名为'itemresults'的情节提要
我知道为什么我会犯这个错误,因为itemsresults不是故事板,而是风投做了研究之后,我可以使用故事板参考,但之后我必须重新设计我的布局…而且他们做起来并不好玩。
为什么这是个问题在上面的第二个序列中,如果我将itemsresults更改为Main,它就会工作,问题是,当我单击它时,会显示模式,但随后应用程序会再次显示主屏幕,并且它不会停留在itemsresults上。
有人能帮忙吗?谢谢!啊!
添加didSelect
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath as IndexPath, animated: true)
tableView.isUserInteractionEnabled = true
let selectedItem = self.currentItemsArray[indexPath.row]
print(selectedItem.itemID)
}
我通过在脚本中从tableview单元格向新的viewcontroller添加一个sequer来“修复”这个问题。我给了那个seque一个id并做了下面的方法。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ShowItemDetailsSeque",
let destination = segue.destination as? ViewSingleItem,
let itemIndex = tableView.indexPathForSelectedRow?.row
{
let selectedItem = self.currentItemsArray[itemIndex]
destination.theItemID = selectedItem.itemID
print(selectedItem.itemTitle)
}
}