【问题标题】:Why is WKInterfaceLabel text not refreshing为什么 WKInterfaceLabel 文本不刷新
【发布时间】:2016-12-03 04:46:43
【问题描述】:

WatchApp 从 iPhone 接收数据。

我用接收到的数据刷新标签文本,没有任何反应,UI 没有刷新。

其他线程建议将其推送到主线程,这似乎也无济于事。

欢迎提出任何想法。

-(void)session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary *)applicationContext

{
    dispatch_async(dispatch_get_main_queue(), ^{
    [self.lblTitleBorH setText:@"test"];
    });
}

【问题讨论】:

  • 如果我将 setText 语句放在 -willActivate 中,它就可以正常工作

标签: objective-c watchos-2 wkinterfacelabel


【解决方案1】:

你在用吗

    [*your session* updateApplicationContext:*your dictionary* error:nil];

正确吗?

尝试在上面的 didReceiveApplicationContext 代码中放置一个 NSLog,看看它是否打印出任何内容。

【讨论】:

  • 谢谢,最后我放弃了,会在某个时候再次解决,有更高优先级的事情要做
【解决方案2】:

在我的例子中,当我尝试刷新 UI 时,我发现插座引用是 nil。该问题是由故事板上的两个接口引起的,它们属于同一个WKInterfaceController 类。 当我将第二个屏幕界面分配给另一个 WKInterfaceController 类时,它工作正常。

记得使用主线程调用 UI 对象

dispatch_async(dispatch_get_main_queue(), ^{
   ...
});

或使用performSelectorOnMainThread: withObject: waitUntilDone:等方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多