4

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

4

3 回答 3

4

来自官方文档

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

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

于 2014-12-10T16:26:10.667 回答
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);
}

在上下文中查看您可以在推送视图之前设置的字典格式。

于 2017-01-20T10:14:05.510 回答
0

在这里找到了答案

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

// Inside Init or awakeFromContext of "Page1"
// Reload the next controller and pass the context or data you want
[WKInterfaceController reloadRootControllersWithNames:@[@"Page2"] contexts:@[someData]];
于 2015-06-18T08:53:20.433 回答