Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从方法中设置的属性访问值到另一个方法_Iphone_Objective C_Ios_Xcode - Fatal编程技术网

Iphone 从方法中设置的属性访问值到另一个方法

Iphone 从方法中设置的属性访问值到另一个方法,iphone,objective-c,ios,xcode,Iphone,Objective C,Ios,Xcode,我想获取此委托方法内的结果点的值 - (void)perksDetailsViewController:(PerksDetailsViewController *)sender didPassRequiredPoints:(NSNumber *)requiredPoints withCard:(Card *)selectedCard { double perksPoints = [requiredPoints doubleValue]; self.resultingPoin

我想获取此委托方法内的结果点的值

- (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);
}
这很好,但是当我尝试访问下面方法中的resultingPoints时,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卡钱包[22196:f803]剩余900分


2012-05-02 15:47:49.291 CardWallet[22196:f803]hey points left是(空)

从您上次的评论:

这是它的属性声明
@property(非原子,弱)NSNumber*resultingPoints

这可能是你问题的根源。弱属性将被解除分配并设置为
nil
,如果没有其他内容保留它,这里就是这种情况。使其成为一个强属性,当您按下新的视图控制器时,它仍然存在

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


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

只需尝试-(void)didPressDone:(id)发送方{NSLog(@“hey points left is%@),self.resultingPoints);pointsResults IEWController*pointsResults=[self.storyboard InstanceeviewcontrollerWithiIdentifier:@“resultsPointsVC”];pointsResults.leftPointsLabel.text=[self.resultingPoints stringValue];[self.navigationController pushViewController:pointsResults动画:是];}它只是didPressDone方法的一个副本:|不,它在逻辑上有数据引用。只有在推送视图之后才将值放入leftpointslabel。在推送视图之前,必须尝试设置该值。第一个方法相对于第二个方法何时被调用?这些方法在应用程序中代表什么过程?看起来像t第一个方法是委托方法,第二个方法正在启动一个新的视图控制器,但不清楚什么会去哪里。@jrturton第一个Yep2你是对的。首先调用委托方法,然后第二个方法是我为UIBarButton所做的自定义方法。我希望值resultingPoints传递到下一个视图控制器的标签值。我将其更改为strong,但是,didPressDone方法的NSLog仍然显示resultingPoints为零:(请注意,委托方法的功能很好,它可以进行计算。我只想知道为什么在didPressDone中结果点为空。没有别的,只有在这些方法中使用了结果点。让我们看看如何将.m文件放入粘贴箱?很抱歉,这只是我第一次知道这件事。