我正在制作一个向iwatch发送通知的应用程序。我想在下一个视图控制器中显示通知消息,如何从通知视图控制器传递数据到基于页面导航的下一个视图控制器?
我正在制作一个向iwatch发送通知的应用程序。我想在下一个视图控制器中显示通知消息,如何从通知视图控制器传递数据到基于页面导航的下一个视图控制器?
从官方文档中得知:
当推送一个新的界面控制器时,建议使用pushControllerWithName:context:方法传递上下文对象。上下文对象是你向新的界面控制器通信的唯一方式,以确定它应该展示什么。上下文对象既可以是现有的数据对象,也可以是你动态创建并填充相关信息的字典。
如果您更喜欢使用segue来初始化界面控制器之间的层次结构导航,则WatchKit会根据segue源是表行还是按钮调用contextForSegueWithIdentifier:inTable:rowIndex:或contextForSegueWithIdentifier:方法。 使用这些方法提供所需的上下文对象以初始化新的界面控制器。
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]];