对铸造的不完全理解

时间:2014-12-07 10:37:02

标签: ios objective-c

我有一个tableview,我想使用默认的cell.imageView来显示一个字体很棒的图像(将根据显示的核心数据对象中的字符串确定)。 我正在使用ios-Fontawesome

基本上我正在尝试使用我想要的FA图标建立FAImageview(UIImage的子类),然后使单元格ImageView显示它。

下面的代码不起作用,但我怀疑这应该是允许的,因为它们是从相同类型继承的。

然而,我对铸造的理解也非常不完整。 非常感谢任何帮助。

我的代码(在我的cellForRowAtIndexPath中)如下所示。

FAImageView *faImageView = [[FAImageView alloc] initWithFrame:CGRectMake(0.f, 0.f, 100.f, 100.f)];
//FAImageView *faImageView = [[FAImageView alloc] init];
faImageView.image = nil;
[faImageView setDefaultIconIdentifier:@"fa-github"];

cell.imageView.image = faImageView.image;

编辑: setDefaultIconIdentifier如下所示:

- (void)setDefaultIconIdentifier:(NSString*)defaultIconIdentifier
{
self.defaultIcon = [NSString fontAwesomeEnumForIconIdentifier:defaultIconIdentifier];
}

2 个答案:

答案 0 :(得分:1)

查看库代码,您的假设是错误的。

字体真棒根本不用于图像,它适用于字体。 UIImageView实际上没有图像集。它内部有一个标签,设置图标会使标签中的文字发生变化。

这就是为什么你的代码无效 - faImageView.image应该是空的。

我个人认为这是一个非常糟糕的图书馆设计。

而不是使用单元格的默认imageView,更好的解决方案是[cell.contentView addSubview:faImageView]并设置其框架。

答案 1 :(得分:0)

更改此行:

 cell.imageView.image = faImageView.image;

对此:

 cell.imageView = faImageView; 

或者这个:

 [cell.imageView addSubview:faImageView];

问题是你的FAImageView实例没有任何图像,你的faImageView.image等于nil,你可以试试这个:

 NSLog(@"Whats is my image:%@",[faImageView.image description]);