0

我在 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];
}
4

1 回答 1

0

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

LabelTheStore 的内容应该是:

self.storeNameLabel.text = @"TEST";

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

于 2012-05-04T13:59:56.313 回答