Iphone UILabel未使用其他类的值进行更新

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到

我是iPhone的初学者

我有两门课
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];