如何在 iwatch 中的两个视图控制器之间传递数据



我正在开发一个向iwatch发送通知的应用程序。我想在下一个视图控制器上显示通知消息,如何在基于页面的导航中将数据从通知视图控制器传递到下一个视图控制器?

来自官方文档:

推送新接口控制器时,建议 将上下文对象传递给 pushControllerWithName:context: 方法。一个 上下文对象是您向新对象传达信息的唯一方式 接口控制器关于它应该显示什么。上下文对象 可以是现有的数据对象,也可以是字典 动态创建并填充相关信息。

如果您希望使用 segue 来启动分层导航 在接口控制器之间,WatchKit 调用 contextForSegueWithIdentifier:inTable:rowIndex: or contextForSegueWithIdentifier:方法基于是否来源 Segue 是表格行或按钮。使用这些方法提供 初始化新接口控制器所需的上下文对象。

如果你想

传递数据,而不是简单地使用它......

NSString *a = @"a";
NSString *b = @"b";
[self pushControllerWithName:@"DetailViewController" context:[NSDictionary dictionaryWithObjectsAndKeys:a, @"name",b,@"id", nil]];

转到推送视图并记录其上下文。

- (void)awakeWithContext:(id)context {
    [super awakeWithContext:context];
    NSLog(@"context %@",context);
}

在上下文中,请参阅字典格式,您可以在推送视图之前在其中设置。

我在这里找到了答案

基本上,您需要重新加载要向其传递上下文的控制器(或页面)。

// Inside Init or awakeFromContext of "Page1"
// Reload the next controller and pass the context or data you want
[WKInterfaceController reloadRootControllersWithNames:@[@"Page2"] contexts:@[someData]];

最新更新