如何将数据从一个WKInterfaceController推送到另一个?

时间:2015-03-31 20:16:42

标签: ios objective-c watchkit wkinterfacelabel

我的WatchKit中有2个接口控制器。第一个叫做InterfaceController,另一个叫做DetailsForWatch。 IC上有一个tableView。它解析来自Parse类的数据,并将类中每个条目的数据显示为一行。这很好。

我要做的是将所选行的PFObject传递给DetailsForWatch中的PFObject。我对DFW的设置是:

·H

@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设置为IC上的Group中的Push选项。当我在IC中选择一行时,它会弹出一个空白屏幕,NSLog显示名为finalObject的PFObject为(null)。我错误的是它没有正确传递PFObject?

1 个答案:

答案 0 :(得分:2)

有两种方法可以在两个接口控制器之间传递数据。我这样做的方式是这样的:

  1. 在故事板中的两个控制器之间创建一个segue(如有必要,给它一个标识符)。

  2. 在接口控制器1实现

  3. - (id)contextForSegueWithIdentifier:(NSString *)segueIdentifier

    当通过按下按钮或其他任何方式触发segue时将调用它。

    这可以返回任何对象,例如数据字典(在您的情况下' theDetails')

    1. 在接口控制器2中实现
    2. - (void)awakeWithContext:(id)context

      此处的上下文对象将是您在控制器1中传递的对象