ios – WKInterface按钮不会更改标题

我在通知回来后试图更改按钮的标题,但它根本没有响应.我检查了它不是零并检查了我分配的文本,一切都很好.我使房产类型强大而不是弱,但没有成功.
- (void) setButtonTitleFromSelectedSearchResult:(NSNotification *)notif
{

    [self popController];

    self.sourceMapItem = [[notif userInfo] valueForKey:@"SelectedResult"];

    NSLog(@"The Selected Result is: %@",self.sourceMapItem.name);

    //Testing
    NSLog(@"%@",self.fromButton); // check it's not nil

    [self.fromButton setTitle:self.sourceMapItem.name];
}

解决方法

使用WatchKit,如果用户界面元素当前不可见,则无法更新.因此,如果您在“顶部”提供了另一个接口控制器,则在您解除所提供的控制器之前,您无法更新任何呈现控制器的界面元素.此时,您可以使用willActivate方法安全地更新呈现控制器.

SushiGrass传递积木的方法当然是一种有效的方法.然而,在我的测试中,我最终必须管理多个块,并且许多后续块反转了先前排队块已完成的内容(例如,首先将标签的文本更改为“foo”,然后“bar”,然后“foo” “再次.虽然这可行,但它不是最佳的.

我建议任何正在使用WatchKit应用程序的人花点时间考虑他们想要如何考虑屏幕外(即当前不可见)的界面元素. willActivate是你的朋友,如果你从控制器转移到控制器,那么想出一种管理该方法更新的方法是值得的.

为了它的价值,我在JBInterfaceController子类中封装了很多这样的逻辑,它为你处理了很多这样的事情.通过将其用作您自己的接口控制器的基类,您可以在添加的didUpdateInterface方法中更新元素.不幸的是,我还没有时间编写适当的文档,但是头文件和示例项目应该让你:https://github.com/mikeswanson/JBInterfaceController

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...