Sen*_*ful 28 storyboard ios watchkit
我尝试将一个接口控制器添加到故事板,将其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
Can*_*ich 34
重命名WatchKit目标后出现此错误,但最终意识到:如果重命名WatchKit目标,则必须通过Interface Builder中的接口,并确保每个接口的模块名称也重命名.
您可以通过选择接口控制器,单击Identity Inspector(或command-option-3),删除模块名称,然后选项卡来完成此操作.它将自动填入新的目标名称.这样做对我来说!
pha*_*ann 16
这个错误出现了,因为我没有正确处理didDeactivate消息.我的停用控制器仍然通过接收消息MMWormhole.一旦我切断了那个连接,错误就消失了.事实证明,在模拟器中,所有已停用的接口控制器都会在内存中闲置,因此您必须仔细确保它们不会再收到任何类型的消息.我不知道手表本身是否会发生这种情况,但我们当然应该这样认为.
top*_*pes 10
我花了太多时间处理这个问题,但终于想出了它是什么.Apple Watch基本上有两种导航模式:
分级:
[self pushControllerWithName:@"controllerName" context:nil];
Run Code Online (Sandbox Code Playgroud)
基于页面的:
[[self class] reloadRootControllersWithNames:@[@"controller1",@"controller2"] contexts:nil];
Run Code Online (Sandbox Code Playgroud)
根据苹果:
您无法组合分层和基于页面的界面样式.在设计时,您必须选择最适合您应用内容和该风格设计的样式.
所以,问题是我混合了两者,这导致了未定义的行为,如:
***********ERROR - [SPRemoteInterface _interfaceControllerClientIDForControllerID:] interfaceControllerID的clientIdentifier :( null)未找到
希望这有助于其他开发者
编辑:
只是一个对我有用的建议作为解决方法,当使用基于页面的导航时,你仍然可以呈现模态控制器(只是说):
[self presentControllerWithName:@"controllerName" context:nil];
Run Code Online (Sandbox Code Playgroud)
这个错误似乎与这个错误密切相关:无法在Interface Builder中看到自定义类.
当我最初尝试解决这个问题时,我不得不手动输入模块名称,因为自定义类和模块名称的下拉列表都是空的.
检查故事板的源代码揭示了一种解决方法.
工作的接口控制器如下所示:
<controller id="AgC-eL-Hgc" customClass="InterfaceController"
customModule="myWatchApp_WatchKit_App" customModuleProvider="target">
Run Code Online (Sandbox Code Playgroud)
不工作的接口控制器缺少customModule和/或customModuleProvider属性.
因此,解决方法是通过右键单击并选择" 打开方式">"源代码",将这些缺少的属性手动添加到情节提要文件中.
一个较长期的解决方案可能是修复故事板,以便自定义类出现在下拉列表中(请参阅链接问题以获取一些可能的修复).
更新:
其他可以使用的接口控制器customModule="myWatchApp_WatchKit_Extension"(注意_Extension与_App差异)并且不需要该customModuleProvider属性.
| 归档时间: |
|
| 查看次数: |
18941 次 |
| 最近记录: |