XCode自定义segue类卡住了。

12

这个问题看起来有点奇怪,但我无法理解为什么会发生这种情况。

我的做法是重命名一个自定义的segue类,并在“自定义类”下反映出来,但它仍然尝试调用旧的类。

我已经清理了构建文件夹并在项目中搜索了旧的自定义类名称,至少在Xcode中没有找到任何内容。我查看了故事板文件,也没有找到任何内容。

即使我完全删除了自定义的segue,我仍然会得到:

'Could not find a segue class named 'xxxxxxxxx''

问题是我无法理解它从哪里获取了上面的 'xxxxxxxxx',它既不在storyboard文件中也不在代码中。

[[[self view] viewWithTag:1] resignFirstResponder];

当我进行调试时,这就是出现错误的线程终止的地方。我已经删除了文本字段上的所有插座、事件和转场。我没有使用“xxxxxxxxx”作为类的自定义转场。

除此之外,还有什么其他事情我可以做来更彻底地清理项目吗?从哪里开始?


1
你尝试过在设备上删除应用程序/重置模拟器吗?你检查过在storyboard中属性中是否正确定义了segue类吗? - nhahtdh
我对 Mac 平台不是很熟悉,但我尝试在整个硬盘上搜索包含该类名称的文件,但没有找到任何结果。 - Ostmeistro
嘿,谢谢。我重置了模拟器的设置和内容,设置了区域设置,但是当我运行它时,我得到了错误的故事板(即使我已将模拟器设置为瑞典语,我仍然得到英语的故事板)。英语的故事板没有完成,现在我无法运行我在sv.lproj文件夹中得到的那个。这是一个线索吗?@nhahtdh - Ostmeistro
我刚在代码中确认了语言环境是瑞典语,但它不再使用瑞典语的故事板了。嗯。 - Ostmeistro
我的故事板失去了“目标成员资格”,但旧的仍然留在模拟器上,直到我重置它。谢谢nhahtdh!我不能自己回答7个小时,如果你想要美味的karma,你可以回答。 - Ostmeistro
5个回答

75

以下是我的解决方案 - 我需要在界面构建器中选择转场,并将模块从“无”更改为我的项目名称,该项目名称出现在下拉列表中。


2
也帮了我很多,但如何避免这种情况发生? - imike
这个说法有道理,但是模块下拉菜单被禁用了。如果我附加一个自定义类,它会被启用,但对我来说并没有解决问题。 - mobibob
@MihaelIsaev 提交一个雷达反馈。 - Maciej Swic
对我来说,这是在我更改产品名称时发生的。我的自定义segue仍然使用旧名称作为其模块名称。我不知道模块名称默认来自产品名称。 - YoonHo

7
答案是重置故事板的目标成员,然后重置模拟器。

天啊,我为了这个微小的点击挣扎了两个小时!非常感谢你,你救了我的一天! - Phil
我有相同的问题,对我来说重置模拟器没有帮助。 - János
@János:解决方案因情况而异。您尝试过其他答案中的建议吗? - nhahtdh
@János 如果这个问题仍然存在,或者其他人也有同样的疑问,我在重置模拟器之前也不得不重置故事板目标成员资格。 - Ostmeistro
我也是这样做的,后来我从模拟器中删除了应用程序,然后重新安装,它就可以工作了。谢谢nhahtdh。 - mavericks

6

对于那些通过网络寻找答案的人:请检查您是否在构建阶段中包含了实现文件。在我的情况下,我有几个目标,而第二个目标缺少这个实现文件。


4

请查看这个其他的SO问题。通过将自定义转场类声明为Objective-C类来回答“问题#1”

类似的SO Q&A-针对XCode中的一个缺陷

答案摘要:

@objc(CustomSequeLeft2Right)
class CustomSequeLeft2Right {
.
.
.
}

这个问题似乎是Swift名称重整与storyboard不一致的结果,而这种方法则完全避开了这个问题。 - Isaac

1
我的问题是在界面构建器中明确设置了“Class”名称,这是不必要的。它由Xcode管理,并默认为UIStoryboardSegue。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接