我正在开发一个向iwatch发送通知的应用程序。我想在下一个viewcontroller上显示通知消息,如何在基于页面的导航中将数据从通知viewcontroller传递到下一个viewcontroller?
答案 0 :(得分:4)
推送新的接口控制器时,建议您使用 将上下文对象传递给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]];