我有几个类通过条件传递一个字符串。最后,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];
}
答案 0 :(得分:1)
您的问题在于您正在创建新的ViewController对象,并尝试更改现有对象上的变量。如果要从其他文件访问ViewController,请将ViewController设置为其他类的委托。然后调用委托函数来设置标签的文本。
Here是关于如何使用委托的教程。
另请注意,只有主线程可以更改用户界面。因此,如果您不确定执行条件的线程是否是主线程,则可以添加以下代码。
dispatch_async(dispatch_get_main_queue(), ^{
//your code block here
});
我希望这会有所帮助。