是否可以通过Watch代码在iPhone应用程序中触发segue?我一直在研究OS2,它说两个应用程序都处于活动状态时可以传输数据,但想知道是否可以通过Watch代码调用iPhone应用程序中的代码。
答案 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环境,它可以触发一些动作。