如何更改UIView的属性,以便它可以转换为UILable或UIImageView?

时间:2012-03-09 09:53:07

标签: iphone objective-c uiview uiimageview uilabel

我想要做的是从网络服务中读取一些内容,每个内容都有内容类型(文字,图片,按钮......)。 我必须动态显示UIView中的内容。所以我想要做的是创建一个IBoutlet UIView并检查内容类型是否是一个文本我将此uiview转换为UILable并显示文本,如果内容类型是图像我将UIView转换为UIImageView等。 。 我需要从xib文件处理相同的UIView,所以我如何将UIView的属性更改为UILable或UIImageView。

谢谢

1 个答案:

答案 0 :(得分:0)

你不能“改变”UIView是不同的东西。
我建议您在视图中动态添加子视图:

UIView *newView = nil;
switch (content type) {
    case 0: // text
        newView = [[UILabel alloc] init];
        ((UILabel*)newView).text = @"someText";
        [newView sizeToFit];
    case 1: // button
    {
        UIButton *btn = [UIButton buttonWithType:...];
        [btn setTititle:@"Ttile" forControlState:UIControlStateNormal]; // assign all needed properties
        ...
        newView = btn;
    }
    case 2:
    ....
}
newView.frame = ... // calculate Frame using previously created content (e.g. remember y offset and add bounds.size.height after every iteration)
[self.view addSubView:newView];
....