Передача данных из WKInterfaceTable в другой WKInterfaceController

Я не знаком с передачей или передачей данных между двумя WKInterfaceController в Apple Watch. Я пытаюсь сделать следующее: у меня есть переменные типа name и age в SecondInterfaceController, поэтому мне нужно передать им какое-то значение из WKInterfaceTable, когда пользователь нажимает строку. вот код:

- (void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex {

    NSString *name;
    NSString *age;

    switch (rowIndex) {
        case 0:
            name = @"Jack";
            age = @"22";
            break;

        default:
            break;
    }

    NSDictionary *d = [NSDictionary dictionaryWithObject:name forKey:@"kName"];
    [self pushControllerWithName:@"SecondInterfaceController" context:d];

}

но я не знаю, как мне получить доступ к словарю из SecondIntefaceController и передать его _name (WKInterfaceLable).


person Mc.Lover    schedule 19.06.2015    source источник


Ответы (1)


Когда вы нажимаете свой SecondInterfaceController, он будет вызывать awakeWithContext:, а параметр context будет переданным вами словарем. Затем вы можете вытащить значение имени из контекстного словаря и присвоить его своей метке.

- (void)awakeWithContext:(id)context {
    NSDictionary *dict = (NSDictionary *)context;
    [_name setText:dict[@"kName"]];
}

Вы можете передать несколько значений, добавив несколько ключей и значений в свой словарь.

NSDictionary *d = @{@"kName" : name, @"kAge" : age};
[self pushControllerWithName:@"SecondInterfaceController" context:d];
person dan    schedule 19.06.2015
comment
Спасибо ! а как насчет прохождения разных словарей !? I, если добавить dinoDict = [NSDictionary dictionaryWithObject:age forKey:@"kAge"];, будет передан только один словарь, как я могу прикрепить несколько значений к одному контексту? - person Mc.Lover; 19.06.2015
comment
@ Mc.Lover Я добавил к своему ответу код, чтобы показать, как передавать несколько значений в словарь. - person dan; 19.06.2015