如何在iwatch中的两个viewcontroller之间传递数据?

时间:2014-12-10 10:12:11

标签: ios notifications watchkit

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

3 个答案:

答案 0 :(得分:4)

来自Official Documentation

  

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

     

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

答案 1 :(得分:2)

如果你想传递数据而不是简单地使用它......

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);
}

在上下文中,在推送视图之前,请参阅字典格式。

答案 2 :(得分:0)

我找到了the answer here

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

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