Objective c tableview单元格子类中的UIImageView不作为IBOutlet使用

Objective c tableview单元格子类中的UIImageView不作为IBOutlet使用,objective-c,uitableview,uiimageview,Objective C,Uitableview,Uiimageview,我有一个UITableViewCell子类,没什么特别的。我添加了几个标签和一个UIImageView。所有插座都连接到表视图单元视图-而不是文件的所有者。如果我将它们附加到文件的所有者,那么大量关于不符合键值并将它们附加到表视图单元格的错误实际上解决了这个问题。我能正确地填写标签地址 但是,我的一个IBOutlet现在没有正确连接:UIImageView。IBOutlet已经设置好,对标签有效的东西对图像视图无效。下面是一些代码: [[cell imageView] initWithImage

我有一个UITableViewCell子类,没什么特别的。我添加了几个标签和一个UIImageView。所有插座都连接到表视图单元视图-而不是文件的所有者。如果我将它们附加到文件的所有者,那么大量关于不符合键值并将它们附加到表视图单元格的错误实际上解决了这个问题。我能正确地填写标签地址

但是,我的一个IBOutlet现在没有正确连接:UIImageView。IBOutlet已经设置好,对标签有效的东西对图像视图无效。下面是一些代码:

[[cell imageView] initWithImage:thumbnail];
[self.view addSubview:[cell imageView]];
假设缩略图是一个UIImage,它不是零。cell.imageView也不是零。顶行没有在我在xib中设置图像的正确位置显示图像,尽管底行实际上将图像添加到屏幕中,而不是在正确的位置

这是怎么回事?我如何才能获得正确的输出,或者通过将其正确添加到文件的所有者而不抱怨键值符合性,或者通过表视图单元格将其正确连接。非常感谢您的帮助

亲切问候,

Reinder

这一行:

[[cell imageView] initWithImage:thumbnail];
听起来很奇怪。如果imageView已经初始化,例如由nib初始化,则无需再次进行初始化并产生不希望的结果,因为在对象的生命周期中必须调用init一次。相反,如果imageView实例尚未被alloc init调用,则[cell imageView]将为nil,initWithImage:调用将完全无效

所以你说cell.imageView不是nil,所以你的init methodWithImage:方法可能会改变图像视图的框架,这就解释了为什么它被移动到了xib之外的地方,可能它被放置在了单元格视图的原点。不要忘记从xib加载图像时,将调用initWithCoder:方法

作为巡视,您可以执行以下未测试的代码,该代码将现有单元格替换为新单元格:

CGRect oldFrame = cell.imageView.frame;
UIImageView *newImageView = [[[UIImageView alloc] initWithImage:thumbnail] autorelease];
newImageView.frame=oldFrame;
[self.view addSubview:newImageView];
cell.imageView=newImageView;
当然,这个解决方案并不优雅,如果您能够解决KVC问题,那就更好了。我不清楚为什么会出现这些错误,我应该看看代码和xib。它不明白你说的是什么意思,这不起作用。不应该有诡计,除非你会被这样的虫子击中