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

问题描述 投票:16回答:14

每当我在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几乎没用?

ios objective-c watchkit apple-watch
14个回答
38
投票

我解决了这个问题:

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

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

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


1
投票

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

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

获得模块名称后,只需继续为每个接口控制器设置它

图像显示如何设置产品名称


0
投票

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


0
投票

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


0
投票

单击我的Watch故事板>界面控制器场景> Identity Inspector(中间图标,从Xcode右侧菜单上显示的5个图标)>将模块设置为“[YourProjectName] Extension”为我工作!


0
投票

只需查看类和接口的目标。它应该被设置为扩展,这就是全部


0
投票

只是开了几个小时就疯狂了。按照这里的所有建议,没有运气。

最让我失望的是我本来应该做的事情 - 我清理了构建文件夹。

产品>清洁构建文件夹


23
投票

对于其他拥有此权限的人。在创建类时,必须将类设置为正确的目标成员资格,即yourApp WatchKit Extension而不是yourApp WatchKit App。它也可以在界面构建器中的目标成员身份中进行编辑。


15
投票

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


8
投票

在WatchOS中添加新的接口控制器后,由于错误导致上述问题

“自定义类中的模块名称”: -

enter image description here

将模块更改为扩展名之后,问题就解决了。

enter image description here


2
投票

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


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

enter image description here enter image description here


1
投票

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


1
投票

您需要在此处验证视图控制器是否在您的编译源中:选择Project> Select Watchkit Extension Target> Build Phases> Compile Sources


1
投票

我通过将Module设置为Watch_Extension来解决它

© www.soinside.com 2019 - 2024. All rights reserved.