Как перенести данные из одного WKInterfaceController в другой?

У меня есть 2 контроллера интерфейса в моем WatchKit. Первый называется Interface Controller, а другой - DetailsForWatch. IC имеет табличное представление на нем. Он анализирует данные из класса Parse и отображает данные из каждой записи в классе в виде строки. Это отлично работает.

То, что я пытаюсь сделать, это передать PFObject для выбранной строки в PFObject в DetailsForWatch. Моя установка для DFW:

.час

@interface DetailsForWatch : WKInterfaceController {
}
@property (nonatomic, retain) IBOutlet WKInterfaceLabel *detailsLabel;
@property (nonatomic, retain) PFObject *finalObject;

@end

.m

- (void)awakeWithContext:(id)context {
    [super awakeWithContext:context];
    NSString *details = self.finalObject [@"Request"];

    [self.detailsLabel setText:details];
    NSLog(@"%@", self.finalObject);
    // Configure interface objects here.
}

В IC для.h у меня есть:

@class DetailsForWatch;
@interface InterfaceController : WKInterfaceController {
    DetailsForWatch *_theDetails;


}
@property (retain) DetailsForWatch *theDetails;
@end

В.m у меня есть:

@synthesize theDetails = _theDetails;

для didSelectRowAtIndex у меня есть:

_theObject = _theObjective[rowIndex];

    self.theDetails = [[DetailsForWatch alloc] init];
    _theDetails.finalObject = _theObject;

Я настроил DFW как выбор Push из группы на IC. Когда я выбираю строку в IC, он выдвигает пустой экран, и NSLog показывает, что PFObject с именем finalObject равен (null). Что я делаю не так, что он не передает PFObject должным образом?

1 ответ

Решение

Существует несколько способов передачи данных между двумя интерфейсными контроллерами. То, как я это делал, выглядит так:

  1. создать переход (при необходимости укажите его идентификатор) между двумя контроллерами в моей раскадровке.

  2. В интерфейсе контроллера 1 реализуем

- (id)contextForSegueWithIdentifier:(NSString *)segueIdentifier

он будет вызван, когда переход будет вызван нажатием кнопки или чем-то еще.

Это может вернуть любой объект, такой как словарь данных (в вашем случае 'theDetails')

  1. В интерфейсе контроллера 2 реализуем

- (void)awakeWithContext:(id)context

объект контекста здесь будет тем, через который вы прошли в контроллере 1

Другие вопросы по тегам