0

我想在这个委托方法中获取结果点的值

- (void)perksDetailsViewController:(PerksDetailsViewController *)sender didPassRequiredPoints:(NSNumber *)requiredPoints withCard:(Card *)selectedCard 
{

    double perksPoints = [requiredPoints doubleValue];

    self.resultingPoints = [NSNumber numberWithDouble:[selectedCard subtractPoints:perksPoints] ];

    NSLog(@"points remaining %@", self.resultingPoints);
}

这工作正常,但是当我尝试在下面的方法中访问结果点时,结果点有一个空值,正如我放置的 NSLog 所说的那样。

- (void) didPressDone:(id)sender {

    PointsResultsViewController *pointsResults = [self.storyboard instantiateViewControllerWithIdentifier:@"resultsPointsVC"];

    [self.navigationController pushViewController:pointsResults animated:YES];

    pointsResults.leftPointsLabel.text = [self.resultingPoints stringValue];

    NSLog(@"hey points left is%@", self.resultingPoints);
}  

什么是从第一种方法中获取结果点值的好方法?提前致谢。

编辑:日志输出

2012-05-02 15:47:48.297 CardWallet[22196:f803] 积分剩余 900

2012-05-02 15:47:49.291 CardWallet[22196:f803] 剩下的点数是(空)

4

1 回答 1

1

从你的最后评论:

这是它的属性声明@property (nonatomic, weak) NSNumber *resultingPoints;

这可能是您问题的根源。如果没有其他东西保留它,弱属性将被释放并设置为nil,这里就是这种情况。让它成为一个强大的属性,当你推送新的视图控制器时它仍然会存在。

根据您在聊天中提供的详细信息,您实际上正在处理此类的两个不同实例。一个在屏幕上,一个被用作代理。

分配委托时,您必须确保它与屏幕上的对象相同。这最好在 prepareForSegue 中完成,此时 segue 的目标视图控制器是即将出现的视图控制器。

于 2012-05-02T07:45:32.873 回答