我在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];
}
答案 0 :(得分:0)
在LabelTheStore方法中,每次都要分配一个UILabel;那不是投票工作。在您的UI中,您有一个由StoreDetailsController控制的视图。视图中应该有一个UILabel,它链接到控制器中storeNameLabel的IBOutlet。你联系了它;它已经分配,所以你不需要再分配它。
LabelTheStore的内容应该是:
self.storeNameLabel.text = @"TEST";
如果调用该方法并且您仍未看到标签更改,请确保StoreDetailsController中的IBOutlet已连接到UILabel。