我尝试将一个接口控制器添加到故事板,将其Custom Class设置为WKInterfaceController子类,在模拟器中启动应用程序并导航到指定的接口控制器.
当我这样做时,我收到以下错误:
WatchKit错误 - 无法找到接口控制器类'TestController'来实例化
如果我尝试与控制器交互(例如尝试启动其按钮的操作),我会收到以下错误:
- ***********ERROR - [SPRemoteInterface _interfaceControllerClientIDForControllerID:] interfaceControllerID的clientIdentifier :( null)未找到
- ***********ERROR - [SPRemoteInterface _interfaceControllerClientIDForControllerID:] clientControllerID的clientIdentifier:找不到7120004
我尝试按照此答案的建议设置模块名称,但这仍然给我以下错误:
- WatchKit错误 - 无法找到接口控制器类'_TtC29myWatchApp_WatchKit_App19TestController'来实例化
- ***********ERROR - [SPRemoteInterface _interfaceControllerClientIDForControllerID:] interfaceControllerID的clientIdentifier :( null)未找到
- ***********ERROR - [SPRemoteInterface _interfaceControllerClientIDForControllerID:] interfaceControllerID的clientIdentifier:找不到6E20004
每当我在我的子类中建立任何连接时,WKIInterfaceController我都会WatchKit error - unable to find interface controller class 'myClass' to instantiate在模拟器中显示错误和活动指示器,并且视图不会加载.断开所有连接并正确显示视图但仍然出现错误
试着
无法找到接口控制器类'InterfaceController'来实例化
WatchKit reloadRootControllersWithNames导致错误,使用pageController或push/pop之后
两个链接提示一个错误,如果它是一个错误,这肯定不会出现在XCode的发布版本上,并且每个人都会遇到相同的行为呈现watcKit几乎没用?
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
[WKInterfaceController reloadRootControllersWithNames:@[@"pageOne", @"pageTwo"] contexts:nil];
}
Run Code Online (Sandbox Code Playgroud)
遵循Apple的指导方针
调用此方法可以在应用程序的基于页面的界面中重新加载页面.在启动时,您可以使用此方法自定义要显示的页面集.
在发布时,只会导致循环.每次重新加载调用awakeWithContext或将一次又一次地激活或初始化.
是否有更好的方法可以在启动循环时重新加载基于页面的应用程序?
我有一个在模拟器上运行的基本watchkit应用程序,它根据本机iOS应用程序的设置加载具有可变数量的接口控制器的基于页面的导航.
有趣的是,在应用程序首次启动时,一切正常.停止应用程序并再次启动它后,我得到一个持续的错误流:
WatchKit Extension[3191:21870] *********** ERROR -[SPRemoteInterface _interfaceControllerClientIDForControllerID:] clientIdentifier for interfaceControllerID:C760002 not found
Run Code Online (Sandbox Code Playgroud)
只有在重新启动我用于开发的机器后,我才能让应用程序再次运行,但仅限于第一次启动.我想这可能是因为Watch Extension进程不再运行而Watch App试图连接到它,就像Daniel在帖子中描述的那样.我可能错了,但也许某人有解决方案来建议这种情况?
编辑
当我在watchkit应用程序启动开始时使用一些断点进行调试,之后在断点停止一段时间之后我将其关闭并让应用程序运行,它会按原样运行,并且该错误不再出现.看起来给应用程序一些时间来获取/检索某种信息会消除错误.看起来我可能在线程方面遇到一些问题......