gpt4 book ai didi

ios - Swift - 子 Controller 导致 'Receiver has no segue with identifier'

转载 作者:行者123 更新时间:2023-11-30 13:44:58 25 4
gpt4 key购买 nike

我有一个 ViewController,它有一个带有动态表格 View 的子 Controller 。

点击表格单元格时,我需要转到新 View 。

我尝试了各种方法,包括直接从单元格中控制拖动(导致“分离 Controller ”警告),但收效甚微,目前情况如下。

子 Controller (currentName、currentType 是可由父 Controller myHome 获取的全局变量)

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
currentName = "John"
currentType = 1
let segueVC = myHome()
segueVC.segueToMain()
}

家长 Controller (myHome)

func segueToMain() {
dispatch_async(dispatch_get_main_queue()){
self.performSegueWithIdentifier("home_myMain", sender: self)
}
}

我知道这可能很可怕,但它似乎工作正常,因为它存储数据并访问父函数。但是,尝试 segue 会导致“接收器没有带有标识符的 segue”错误。 Segue id 完全正确。它链接到导航 Controller 。

我有一种感觉,我需要一些代表等,但我不太确定如何处理他们。摆脱导航 Controller 并直接访问 View 没有任何区别。

任何有关如何触发此转场的帮助将不胜感激。

编辑

关于建议直接从 child 那里进行segue的答案,这里的设置似乎会导致“分离” Controller 错误。郑重声明,我很想使用此方法,但所有尝试都失败了。

父 Controller (A) 构建一个 PageMenu 类,该类从 Controller B 获取其页面结构。B 有一个表格,其中的单元格直接连接到另一个 View 。

A构造菜单如下

self.addChildViewController(self.pageMenu!)
self.view.addSubview(pageMenu!.view)
self.pageMenu!.didMoveToParentViewController(self)

PageMenu 使用 B 类作为每个菜单页面的模板。

Storyboard上的 A 和 B 之间没有物理联系 - 只是 A 的类将 B 设置为子级。

从 B 开始的 Segues 因“分离 Controller ”错误而失败,所以也许我在子设置中遗漏了一些东西?

谢谢

最佳答案

你不能只分配父 View Controller 的一个新实例并要求它执行segue - 当你直接实例化 View Controller 时,它不会与 Storyboard关联,这就是为什么你会得到一个异常,表明该 View Controller 没有指定标识符的 segue。

即使您确实从 Storyboard 中实例化了一个新实例,您仍然会收到错误,因为该新实例不会出现在屏幕上,从而导致一条消息,表明您尝试在 View Controller 上呈现 View Controller ,但该 View Controller 不是“t 在 View 层次结构中。

您需要 subview Controller 引用包含它的父 View Controller 实例,然后使用该实例调用 segue。

此外,不需要 dispatch_async - tableview 委托(delegate)方法将在主队列上调用。

最后,按照惯例,类名以大写字母开头,因此 myHome 应该是 MyHome (或者更好,比如 MyHomeViewController >)

关于ios - Swift - 子 Controller 导致 'Receiver has no segue with identifier',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35070991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com