在WatchKit中的prepareForSegue等价物

时间:2015-04-17 09:14:35

标签: ios uistoryboard watchkit

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

4 个答案:

答案 0 :(得分:34)

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

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

enter image description here

然后您可以使用contextForSegueWithIdentifier

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

或者您可以通过代码传递带有上下文的信息:

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

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

中访问此字典

答案 1 :(得分:10)

对于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?)中获取要传递的对象

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

对于表,如下:

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