Ali*_*Ali 8 title ios watchkit wkinterfaceobject
我在通知回来之后尝试更改按钮的标题,但它根本没有响应.我检查了它不是零并检查我分配的文本,一切都很好.我做了属性类型strong而不是weak成功.
- (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];
}
Run Code Online (Sandbox Code Playgroud)
使用 WatchKit,如果用户界面元素当前不可见,则无法更新。因此,如果您在“顶部”呈现了另一个界面控制器,则在您关闭所呈现的控制器之前,您无法更新呈现控制器的任何界面元素。此时,您可以在 willActivate 方法中安全地更新呈现控制器。
SushiGrass 的传递方块的方法无疑是一种有效的方法。然而,在我的测试中,我最终不得不管理多个块,并且许多后续块逆转了早期排队块所完成的任务(例如,首先将标签的文本更改为“foo”,然后是“bar”,然后是“foo” ” 再次。虽然这可行,但并不是最佳选择。
我建议任何正在开发 WatchKit 应用程序的人花点时间考虑一下他们希望如何考虑屏幕外(即当前不可见)的界面元素。willActivate 是你的朋友,如果你从一个控制器转移到另一个控制器,想出一种在该方法中管理更新的方法是值得的。
无论如何,我将很多这样的逻辑封装在一个JBInterfaceController子类中,该子类可以为您处理很多这样的事情。通过使用它作为您自己的界面控制器的基类,您可以简单地更新添加的didUpdateInterface方法中的元素。不幸的是,我还没有时间编写适当的文档,但是头文件和示例项目应该可以帮助您: https: //github.com/mikeswanson/JBInterfaceController
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |