问题
I have an interface with 2 buttons, both of them call the same interface but with different information. On the traditional interface I use prepareForSegue, but I don't know what's the equivalent one on the WatchKit.
回答1:
You can do this in two ways:
In your storyboard you set an identifier in your segue:

and then you can use contextForSegueWithIdentifier
:
- (id)contextForSegueWithIdentifier:(NSString *)segueIdentifier {
if ([segueIdentifier isEqualToString:@"yourIdentifier"]) {
return aDictionaryWithYourInformation;
}
}
Or you can pass information with a context via code, with:
[self pushControllerWithName:@"YourViewController"
context:aDictionary];
This context is a dictionary and you have access to this dictionary in the - (void)awakeWithContext:(id)context
回答2:
For segue navigation in Watchkit there are two methods in WKInterfaceController:
override func contextForSegueWithIdentifier(segueIdentifier: String) -> AnyObject? {
return //your object
}
and for tables
override func contextsForSegueWithIdentifier(segueIdentifier: String, inTable table: WKInterfaceTable, rowIndex: Int) -> [AnyObject]? {
return //your object
}
you can get the object you are passing in func awakeWithContext(context: AnyObject?)
of the interface controller you are pushing
回答3:
In WatchKit, you can use this for calling WKInterfaceController:
[self pushControllerWithName:@"YourControlName"
context:[self contextForSegueWithIdentifier:@"YourControlName"]];
回答4:
For tables it's the following:
override func contextForSegue(withIdentifier segueIdentifier: String, in table: WKInterfaceTable, rowIndex: Int) -> Any? {
return //your object
}
来源:https://stackoverflow.com/questions/29695062/prepareforsegue-equivalent-in-watchkit