2012-03-09 43 views
1

我想要做的是我从Web服务中读取一些内容,每个内容都有内容类型(文本,图像,按钮...)。 我必须动态显示UIView中的内容。所以我想要做的是创建一个IBoutlet UIView并检查内容类型是否为文本我将此uiview转换为UILable并显示文本,如果内容类型是图像我将UIView转换为UIImageView等。 。 我需要在xib文件中使用相同的UIView,所以我怎样才能将UIView的属性更改为UILable或UIImageView。我如何更改UIView的属性,使其可以被铸造成UILable或UIImageView?

谢谢

回答

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]; 
.... 
+0

非常感谢多数民众赞成我一直在寻找。 – Legnus 2012-03-09 10:13:13

+0

如果我尝试newView = [[UILabel alloc] initWith ...我不能将文本添加到newView,因为newView是UIView,而不是UILabel,我还有1个问题...我的意思是说,写newView.text = @“someText”; – Legnus 2012-03-09 10:18:00

+0

编辑以显示引用var作为其“真实”类型的2种方法 – 2012-03-09 10:24:20

相关问题