1

在 UITableViewController 中,我正在实例化 UITableViewCells,其中一些单元格由附件视图突出显示。对我来说,这有效:

// works for me
UIImageView *favoriteImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon"]];
[cell setAccessoryView:favoriteImageView];

为多个单元重复实例化同一个视图对我来说似乎很浪费;但是,当我尝试重新使用与多个单元格的附件视图相同的视图时,我的应用程序以一种悲惨的方式失败(完全黑屏,没有显示视图)我无法调试。我是否在方法中将 favoriteImageView 声明为静态的,例如

// doesn't work for me
static UIImageView *favoriteImageView = nil;        
if (!favoriteImageView) 
    favoriteImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon"]];

[cell setAccessoryView:favoriteImageView];

或者将其声明为 ivar 并在 init 中定义它,以便我结束:

// doesn't work for me
[cell setAccessoryView:[self favoriteImageView]];

在这两种不工作的情况下,当一个单元格设置了它的附件视图时,它会正确显示。一旦我标记第二行以便将附件视图设置为引用相同的视图,整个事情就会挂起。

构造 UIView 和/或配置 UITableViewCell 以使同一个 UIView 可以被引用为多个 UITableViewCells 的附件视图的要求是什么?

4

1 回答 1

1

UIImageView 从 UIView 扩展而来。而且一个 UIView 不能同时在两个或多个地方。因此,如果您尝试同时在两个或多个单元格中显示 UIImageView,它将无法正常工作。屏幕上的每个单元格都需要一个 UIImageView。

我建议为每个单元格创建 UIImageView。tableviewcells 将与它们的附件视图一起重用,所以我不会太担心性能或内存问题。

于 2012-06-02T07:27:52.263 回答