WatchKit错误 - 无法找到实例化的接口控制器类''

时间:2015-03-18 12:12:09

标签: ios objective-c watchkit apple-watch

每当我在WKIInterfaceController的子类中建立任何连接时,我都会收到错误WatchKit error - unable to find interface controller class 'myClass' to instantiate并且在模拟器中显示活动指示符并且视图不会加载。断开所有连接并正确显示视图但仍然出现错误

尝试

Unable to find interface controller class 'InterfaceController' to instantiate

WatchKit: unable to find interface controller class

WatchKit reloadRootControllersWithNames causing error, with pageController or after push/pop

两个链接表示一个错误,如果它是一个错误,这肯定不会出现在XCode的发布版本上,并且每个人都会遇到相同的行为,只能使用watcKit而无用吗?

16 个答案:

答案 0 :(得分:37)

我通过以下方式解决了这个问题:

1)删除制作麻烦的InterfaceController文件,并在项目中的WatchKit Extension文件夹中再次创建它(不只是在Project导航器中的组中)。默认情况下,xcode会为您提供Watch App文件夹 - 您必须更改它。

2)在Interface Builder中设置类,以便模块设置为ProjectName_WatchKit_Extension

如果未设置模块,则xcode无法找到您的课程

答案 1 :(得分:22)

对于任何有这个的人。在创建课程时,必须将课程设置为正确的目标成员资格,即yourApp WatchKit Extension而不是yourApp WatchKit App。它也可以在界面构建器中的目标成员身份中进行编辑。

答案 2 :(得分:15)

在最近的8.2发布之后,我遇到了同样的问题。我必须去我的每个InterfaceControllers并将其自定义类模块调整为显示为选项的任何内容或" none"。

答案 3 :(得分:2)

在我的情况下,我将Watch Kit Extension重命名为WatchKitExtension,并且它在模拟器上成功运行,但在完整项目清理后无法运行。
感谢https://stackoverflow.com/a/29904047/104170 为了使其工作,我只需要在.storyboard文件中指定正确的模块

答案 4 :(得分:2)

1. select your WKInterfaceController
2. select Inherit Module From Target

enter image description here enter image description here

答案 5 :(得分:1)

创建扫视界面控制器时,请务必将其添加到Watch App Extension。这是我的问题。

答案 6 :(得分:1)

您需要在此处验证视图控制器是否在您的编译源中:选择项目>选择Watchkit Extension Target>构建阶段>编译来源

答案 7 :(得分:1)

我通过将Module设置为Watch_Extension

来解决它

答案 8 :(得分:1)

这里的问题是我们为接口控制器设置了错误的模块。由于这些控制器属于Watch Extension目标,因此我们可以找到以下产品模块

该图以显示如何查找产品模块名称

image to show how to find the product module name

有了模块名称后,只需继续为每个接口控制器进行设置

图片以显示如何设置产品名称

image to show how to set the product name

答案 9 :(得分:0)

确保在创建课程时创建EXTENSIONS的新Class成员。

答案 10 :(得分:0)

我通过清除该特定接口类的故事板中的模块名称来修复它。 (这是一个客观的c类)。

答案 11 :(得分:0)

点击我的观看故事板>接口控制器场景> Identity Inspector(中间图标,来自Xcode右侧菜单上的5个图标)>将模块设置为“[YourProjectName] Extension”为我工作!

答案 12 :(得分:0)

只需查看界面目标。它应该设置为Extension all all

答案 13 :(得分:0)

这让我疯了几个小时。遵循了这里的所有建议,没有运气。

最终对我来说,应该是我应该做的-我清理了构建文件夹。

产品>清理构建文件夹

答案 14 :(得分:0)

确保情节提要中的模块名称与tagerts / XXX WatchKit App下的.appex文件相同 常规标签->框架,库和嵌入式内容。

答案 15 :(得分:0)

接受的答案对我不起作用。

我确实回答了这个问题。 https://stackoverflow.com/a/61517773/7345611

但是我确实将与此问题相关的部分放在这里:

最适合我的方法是:

  1. 转到Xcode左侧导航器窗格中的interface.storyboard

  2. 选择interfaceController顶部的黄色圆圈

  3. 转到身份检查器
  4. 在类部分中,通过重新键入类名称并按Enter键,Xcode将自动更新其下的模块部分,将您的类重新分配给该interfaceController。 (您所有的问题都在“模块”部分中,在该部分中,“模块”仍被分配了旧名称)
  5. 对所有interfaceController和customClasses(如果有的话)以及之前为其分配类的所有东西执行相同的过程。

现在该应用程序应该可以按预期运行。