如何通过另一个类更新我的视图控制器的UILabel?

时间:2010-11-01 18:16:26

标签: iphone iphone-sdk-3.0 ios4

我是我的班级我添加了一个视图控制器的实例,创建了一个属性,然后在我的实现文件中合成它。我试图像这样更新视图控制器中的UIlabel,

NSString *currentChar = [[NSString alloc] initWithFormat:@"%c", ch];
viewController.outputLabel.text = currentChar;
[currentChar release];

我的问题是所有内容都是在没有任何错误或警告的情况下构建的,但标签只是没有更新,我做错了什么。我真的很感激这方面的一些帮助。

3 个答案:

答案 0 :(得分:2)

您确定要引用现有的viewController并且没有实例化新的viewController吗?您的财产未被声明为副本,对吗?

textProcessor.h / .m

@interface textProcessor : NSObject {

MainViewController *mainView;

}

@property (retain) MainViewController *mainView;

@end

@implementation textProcessor;
@synthesize mainView;

MainViewController.h / .m

@interface MainViewController : UIViewController {

UILabel *myLabel;

}
@property (retain) UILabel myLabel;

@end

@implementation MainViewController
@synthesize myLabel;

初始化textProcessor类时,设置“mainView”的值,如

-(void)viewDidLoad {
    [super viewDidLoad];
    textProcessor *proc = [[textProcessor alloc] init];
    proc.mainView = self;
    //note that you are not doing this:
    //MainViewController *mainView = [[MainViewController alloc] init];
    //proc.mainView = mainView;
    //that was creating a new instance variable instead of using self, the existing one
    [textProcessor release];
}

答案 1 :(得分:0)

您是否在IB中创建了自己的品牌?如果您使用IB,则必须为UILabel创建一个IBOutlet。然后,您可以在IB中的UILabel与您班级中的IBOutlet建立连接。

答案 2 :(得分:0)

您是否尝试在视图上调用setNeedsDisplay方法?您也可以尝试使用setText方法,而不是直接指定属性。