找不到情节提要,带有模态的ViewControllers序列

时间:2018-07-17 01:43:39

标签: ios swift

我有一个LaunchScreen.storyboard和Main.storyboard

在我的Main.storyboard内,主故事板有我的欢迎屏幕。我在那里还有另外两个ViewController。

流程为Main(storyboard)-> ItemResults(VC)-> ItemSingleView(VC)

从main到其中一个ViewController,我执行以下操作。

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并传递一个String。在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'的情节提要

我知道为什么会收到错误,因为ItemResults不是情节提要,而是VC。经过研究后,我可以使用Storyboard Reference,但随后我必须重新设计布局。....这样做真的很有趣。

为什么这是个问题?在上面的第二个命令中,如果我将ItemResults更改为Main,它可以工作,问题是,当我单击它时,模态显示出来,但是应用程序再次显示Main屏幕,并且它不停留在ItemResults上。 / p>

有人可以帮忙吗?谢谢!

添加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)
}

我通过在故事板中从表视图单元格中添加一个序列号到新的ViewController来“修复”了该问题。我给那个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)

    }
}

0 个答案:

没有答案