从iPhone中的Watch

时间:2016-02-09 09:04:33

标签: ios iphone xcode apple-watch

是否可以通过Watch代码在iPhone应用程序中触发segue?我一直在研究OS2,它说两个应用程序都处于活动状态时可以传输数据,但想知道是否可以通过Watch代码调用iPhone应用程序中的代码。

2 个答案:

答案 0 :(得分:3)

你不能将segue从WatchApp(子应用程序)推送到iPhone应用程序(父应用程序),但你可以肯定地将数据从Watch发送到iPhone,根据这些数据你可以在iPhone应用程序上执行segue。

要将更新从Apple Watch发送到iPhone App,您必须在openParentApplication中实施WatchKit Extension

class func openParentApplication(userInfo: [NSObject : AnyObject], reply: (([NSObject : AnyObject], NSError?) -> Void)?) -> Bool

创建NSDictionary并使用以下代码传递该数据:

func updateInformationToParentApp(emergencyInfo : [NSObject : AnyObject]!){
  // Call the parent application from Apple Watch
  WKInterfaceController.openParentApplication(emergencyInfo) { (returnUpdate, error) -> Void in
    if((error) == nil){
      print("Data send successfully");
    } else {
      print("Error : \(error?.localizedDescription)");
    }
  }
}

AppDelegate中实施以下方法来处理WatchApp更新。

func application(application: UIApplication, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]?, reply: ([NSObject : AnyObject]?) -> Void){
  NSLog("Handler Apple Watch Event ");
  watchEvent(userInfo, reply: reply);
}

func watchEvent(userInfo: [NSObject : AnyObject]!, reply: (([NSObject : AnyObject]!) ->Void)!) {
  let dic = userInfo as NSDictionary;
  NSLog("dic %@", dic);

  // retrieved parameters from Apple Watch
  print(userInfo["Key"])
  //Perform Segue from Here according to Dictionary Info        
  //Pass back values to Apple Watch
  var returnUpdate = Dictionary<String,AnyObject>()
  let watchAppMessage = "Meesage Back To Apple Watch" as NSString;
  returnUpdate["message"] = NSKeyedArchiver.archivedDataWithRootObject(watchAppMessage);
  reply(returnUpdate)   
}

答案 1 :(得分:0)

你可以看到iPhone和iWatch包含不同的故事板和不同的用户界面,所以从手表到iPhone肯定是不可能的,但你可以通过通知来管理类似的东西,好像在iWatch按下一些按钮,你可以发送通知给iPhone环境,它可以触发一些动作。