在viewDidLoad Objective-c之外添加子视图

时间:2014-11-25 16:16:59

标签: ios objective-c

我正在尝试从方法中添加UILabel。

- (void)setDesc:(NSString *)desc
{
    UILabel *label = [[UILabel alloc] initWithFrame:CGrectMake(200,200,100,100)];
    label.text = desc;
    label.numberOfLines = 4;
    [self.view addSubview:label];
}

此方法在Class2中,它从Class1调用,如下所示:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    desc = @"Sometext";
    [class2obj setDesc:desc]; // class2obj is an object of class2 declared earlier
}

仅当我在class2中的ViewDidLoad中更改标签时,标签才会更新。怎么了?

2 个答案:

答案 0 :(得分:0)

你在[super viewDidLoad]之前调用它吗?

使用[label setBackGroundColor:[UIColor blueColor]]确保没有添加标签。

尝试[label sizeToFit]因为numberOfLines = 4可能存在问题;

答案 1 :(得分:0)

您正在使用UILabel对象设置NSString对象。 UILabel *label = desc;

那很糟糕。如果要以编程方式创建新标签,请执行以下操作:

UILabel *label = [[UILabel alloc] initWithFrame:frame];
[label setText:@"text"];
[label setFont:myFont];
[label setTextColor:myTextColor];
[self.view addSubview:label];