标签文本不会更改,但视图接收变量

时间:2013-05-31 01:57:04

标签: ios uilabel

我有几个类通过条件传递一个字符串。最后,View Controller会捕获它并将其设置为它拥有的标签文本。到目前为止,大部分工作都有效,但标签文字并没有改变。但是通过NSLog,我可以看到ViewController看到了正确的字符串。

'h' 的

@interface ViewController : UIViewController
{

}

@property (strong,nonatomic) IBOutlet UILabel *theLabel;
@property (strong,nonatomic) NSString *theString;

-(void)setLabelText:(NSString*)someString;

.m

-(void)setLabelText:(NSString*)someString {
    NSLog(@"VC:%@",someString);  //writes out the desired string fine!
    theLabel.text = someString; //doesn't display the text        
}

我知道标签正常工作,因为我可以从viewDidLoad调用“setLabelText:”方法,并输入一些随机字符串,它会显示出来。但是,我似乎无法从这种方法改变它。任何帮助将不胜感激。

“发件人”

    -(void)sendToMain:(NSString*)string{


    ViewController *newController = [ViewController alloc];
    [newController setLabelText:string];

}

1 个答案:

答案 0 :(得分:1)

您的问题在于您正在创建新的ViewController对象,并尝试更改现有对象上的变量。如果要从其他文件访问ViewController,请将ViewController设置为其他类的委托。然后调用委托函数来设置标签的文本。

Here是关于如何使用委托的教程。

另请注意,只有主线程可以更改用户界面。因此,如果您不确定执行条件的线程是否是主线程,则可以添加以下代码。

dispatch_async(dispatch_get_main_queue(), ^{

//your code block here

});

我希望这会有所帮助。