У меня есть интерфейс с 2 кнопками, оба из них вызывают один и тот же интерфейс, но с разной информацией. В традиционном интерфейсе я использую prepareForSegue, но я не знаю, что эквивалентно ему в WatchKit.
Подготовить эквивалент readyForSegue в WatchKit
Ответ 1
Вы можете сделать это двумя способами:
В вашем раскадровке вы устанавливаете идентификатор в своем сегменте:
а затем вы можете использовать contextForSegueWithIdentifier
:
- (id)contextForSegueWithIdentifier:(NSString *)segueIdentifier {
if ([segueIdentifier isEqualToString:@"yourIdentifier"]) {
return aDictionaryWithYourInformation;
}
}
Или вы можете передавать информацию с помощью контекста через код, используя:
[self pushControllerWithName:@"YourViewController"
context:aDictionary];
Этот контекст является словарем, и у вас есть доступ к этому словарю в - (void)awakeWithContext:(id)context
Ответ 2
Для segue-навигации в Watchkit в 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?)
контроллера интерфейса, на который вы нажимаете
Ответ 3
В WatchKit вы можете использовать это для вызова WKInterfaceController:
[self pushControllerWithName:@"YourControlName"
context:[self contextForSegueWithIdentifier:@"YourControlName"]];