WatchKit 中的 prepareForSegue 等价物

prepareForSegue equivalent in WatchKit

我有一个有2个按钮的界面,它们都调用相同的界面但具有不同的信息。在传统界面上我使用prepareForSegue,但我不知道WatchKit上的等效界面是什么。

您可以通过两种方式执行此操作:

在你的故事板中,你在你的 segue 中设置了一个标识符:

然后你可以使用contextForSegueWithIdentifier:

- (id)contextForSegueWithIdentifier:(NSString *)segueIdentifier {
     if ([segueIdentifier isEqualToString:@"yourIdentifier"]) {
        return aDictionaryWithYourInformation;
     }
}

或者您可以通过代码通过上下文传递信息,使用:

[self pushControllerWithName:@"YourViewController"
                     context:aDictionary];

此上下文是一个字典,您可以在 - (void)awakeWithContext:(id)context

中访问此字典

对于 Watchkit 中的 segue 导航,WKInterfaceController 中有两种方法:

override func contextForSegueWithIdentifier(segueIdentifier: String) -> AnyObject? {
        return //your object
    }

和表格

override func contextsForSegueWithIdentifier(segueIdentifier: String, inTable table: WKInterfaceTable, rowIndex: Int) -> [AnyObject]? {
      return  //your object
    }

你可以在你推送的接口控制器func awakeWithContext(context: AnyObject?)中得到你传入的对象

在 WatchKit 中,您可以使用它来调用 WKInterfaceController:

[self pushControllerWithName:@"YourControlName"
          context:[self contextForSegueWithIdentifier:@"YourControlName"]];

表格如下:

override func contextForSegue(withIdentifier segueIdentifier: String, in table: WKInterfaceTable, rowIndex: Int) -> Any? {
     return  //your object
    }