从另一个类更改UILabel文本

时间:2012-05-03 18:47:05

标签: class text uilabel

我在UIViewController中创建了一个UILabel和一个更改该标签的函数,它们在.h文件中初始化如下:

@interface StoreDetailsController : UIViewController {
UILabel *storeNameLabel;
}

@property (nonatomic, retain) IBOutlet UILabel *storeNameLabel;

- (IBAction)LabelTheStore:(int)storeNumber;

然后在.m文件中:

@synthesize storeNameLabel;

...

-(void)LabelTheStore:(int)storeNumber
{
    NSLog(@"CHECK NUMBER: %d", storeNumber);
    storeNameLabel = [[UILabel alloc] init];
    storeNameLabel.text = @"TEST";
}

将int变量传递给将使用的函数。日志根据我传递的内容显示正确的数字,因此我知道函数被正确调用,但是当我从另一个类调用该函数时,标签永远不会更新。如果我在storeNameLabel.text上调用NSLog,则显示为(null)。

storeNameLabel在界面构建器中正确链接,程序构建正常。 更新:

加载StoreDetailsController的方法:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    StoreDetailsController *storeDetailsController = [StoreDetailsController alloc];
    storeDetailsController = [storeDetailsController initWithNibName:@"StoreDetailsController" bundle:[NSBundle mainBundle]];

    NSInteger row = indexPath.row;
    [storeDetailsController LabelTheStore:row];

    [self.navigationController pushViewController:storeDetailsController animated:YES];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

1 个答案:

答案 0 :(得分:0)

在LabelTheStore方法中,每次都要分配一个UILabel;那不是投票工作。在您的UI中,您有一个由StoreDetailsController控制的视图。视图中应该有一个UILabel,它链接到控制器中storeNameLabel的IBOutlet。你联系了它;它已经分配,​​所以你不需要再分配它。

LabelTheStore的内容应该是:

self.storeNameLabel.text = @"TEST";

如果调用该方法并且您仍未看到标签更改,请确保StoreDetailsController中的IBOutlet已连接到UILabel。