Iphone UILabel未使用其他类的值进行更新
我是iPhone的初学者 我有两门课Iphone UILabel未使用其他类的值进行更新,iphone,ios,objective-c,uilabel,Iphone,Ios,Objective C,Uilabel,我是iPhone的初学者 我有两门课TestViewController(这与故事板中的e视图链接)和ViewController 我试图调用TestViewController中的一个方法([tc refresh:val];),其中val作为ViewController类的参数。我可以从日志中看到,val到达了TestViewController,但是由于某些原因,标签没有更新,我也没有得到我在视图中设置的标签的当前文本。它给出null值。请查看我获得的代码和日志,并建议我如何通过调用从VC到
TestViewController
(这与故事板中的e视图链接)和ViewController
我试图调用TestViewController
中的一个方法([tc refresh:val];
),其中val
作为ViewController
类的参数。我可以从日志中看到,val
到达了TestViewController
,但是由于某些原因,标签没有更新,我也没有得到我在视图中设置的标签的当前文本。它给出null
值。请查看我获得的代码和日志,并建议我如何通过调用从VC
到TVC
的方法来更新标签
TestViewController.h
ViewController.h
日志
问题很简单
-(void)refresh:(NSString *)val{
NSLog(@"Value of Val = %@",val);
NSLog(@"TEXT CUrret VALUE %@",lblDisp.text);
lblDisp.text=val;
}
在这里,在打印日志之后,值会更新,所以更改代码的顺序如下:首先更新标签,然后记录值
所以使用
-(void)refresh:(NSString *)val{
lblDisp.text=val;
NSLog(@"Value of Val = %@",val);
NSLog(@"TEXT CUrret VALUE %@",lblDisp.text);
}
编辑
原因可能是
lblDisp
是从nib加载的,在显示/推送视图之前,它不是有效内存。然后只有该方法才会有有效的标签实例,然后只有您可以更新它。问题非常简单
-(void)refresh:(NSString *)val{
NSLog(@"Value of Val = %@",val);
NSLog(@"TEXT CUrret VALUE %@",lblDisp.text);
lblDisp.text=val;
}
在这里,在打印日志之后,值会更新,所以更改代码的顺序如下:首先更新标签,然后记录值
所以使用
-(void)refresh:(NSString *)val{
lblDisp.text=val;
NSLog(@"Value of Val = %@",val);
NSLog(@"TEXT CUrret VALUE %@",lblDisp.text);
}
编辑
原因可能是
lblDisp
是从nib加载的,在显示/推送视图之前,它不是有效的内存。然后只有该方法才会有有效的标签实例,然后只有您可以更新它您的问题在于您传递值的方式
TestViewController *tc=[[TestViewController alloc]init];
[tc refresh:val];
第一行创建并初始化TestViewController
类的新实例tc
。这允许您访问其方法,但这并不意味着您正在访问最初创建的实例或最初分配的数据。这意味着您的标签lblDisp
,以及新的TestViewController
实例的其余属性均为零
基本上,您不能使用此策略来来回传递数据。请参阅以下帖子:
您的问题在于将值传回的方式
TestViewController *tc=[[TestViewController alloc]init];
[tc refresh:val];
第一行创建并初始化TestViewController
类的新实例tc
。这允许您访问其方法,但这并不意味着您正在访问最初创建的实例或最初分配的数据。这意味着您的标签lblDisp
,以及新的TestViewController
实例的其余属性均为零
基本上,您不能使用此策略来来回传递数据。请参阅以下帖子:
lblDisp.text=val;NSLog(@“文本当前值%@”,lblDisp.TEXT);编辑代码中的这两行你在调用TestViewController的changetxt方法中的display方法吗?@TapanNathvani编辑它到什么?它不显示刷新方法中的当前值“sdfgdfgd”。你能告诉应用程序的流程吗?它真的很混乱
Appdelegate->TestViewController->ViewController
?这是flowlbdisp.text=val;NSLog(@“文本当前值%@”,lblDisp.TEXT);编辑代码中的这两行你在调用TestViewController的changetxt方法中的display方法吗?@TapanNathvani编辑它到什么?它不显示刷新方法中的当前值“sdfgdfgd”。你能告诉应用程序的流程吗?它真的很混乱<代码>Appdelegate->TestViewController->ViewController?这是流程吗
-(void)refresh:(NSString *)val{
lblDisp.text=val;
NSLog(@"Value of Val = %@",val);
NSLog(@"TEXT CUrret VALUE %@",lblDisp.text);
}
TestViewController *tc=[[TestViewController alloc]init];
[tc refresh:val];