【问题标题】:How to pass data between two viewcontrollers in iwatch?如何在 iwatch 中的两个视图控制器之间传递数据?
【发布时间】:2014-12-10 10:12:10
【问题描述】:

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

【问题讨论】:

  • 如果有人对此有任何想法,请回答,非常感谢
  • 还有其他人有这方面的信息吗?也请参考以下对话。
  • 你最终解决了这个问题吗?我有完全相同的问题。我没有以编程方式推动控制器,所以我的 contextForSegue 没有被调用。具有 2 个视图的页面控制器。如何传递数据!?

标签: ios notifications watchkit


【解决方案1】:

来自Official Documentation

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

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

【讨论】:

  • 感谢杰克,但我的 contextsForSegueWithIdentifier: 方法没有被调用我在情节提要中使用分页导航。
  • 甚至我的远程通知handleActionWithIdentifier方法也没有在notificationcontroller中被调用,我是否遗漏了什么?我正在使用动态通知控制器。
  • 您确定将 Storyboard 界面的类设置为您的自定义类吗?
  • 是动态通知接口设置为默认通知控制器,其他设置为自定义类。
【解决方案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);
}

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

【讨论】:

    【解决方案3】:

    我找到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]];
    

    【讨论】:

      猜你喜欢
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      相关资源
      最近更新 更多