IOS在多个表行

时间:2015-06-24 18:29:44

标签: ios iphone view reference

奇怪的是我在任何地方找不到任何关于这个主题的内容。

基本上,我有一个简单的UITableView,比方说,10行。每行都有一个与之关联的用户,每个用户都有一个“个人资料图片”。现在假设每行由2个用户中的1个创建,因此它将在每个行中显示2个不同的配置文件图片中的1个。

我正在尝试提高内存效率,因此我不想在新的UIImageView中加载相同的图像5次。所以我尝试在同一个用户的每一行中使用完全相同的UIImageView引用,但似乎只有最后一行才能加载显示ImageView。例如,如果屏幕外的行变得可见并重新加载,则该行将显示该行,并从之前出现的行中消失。

所以我的问题是,我该怎么做?

一个。解决我正在尝试做的事情/我缺少的事情

B中。如果我在新的UIImageView中使用它,IOS不会将相同的图像加载到内存中,所以我只是在浪费时间担心这个

℃。一个令我震惊的新解决方案

谢谢!

史蒂夫

*注意,我在Xamarin / Mono中构建这个,但我不认为C#vs Objective C会在这种情况下产生影响

2 个答案:

答案 0 :(得分:2)

UIImage有一个内置缓存,因此选项B很可能是您的解决方案。由于此缓存,可能不需要在每个UIImage中保留一个UIImageView实例。虽然这种方法可能会略微加快您的申请速度,但更有可能是premature optimization

此外,UITableView经过高度优化,可以重复使用移出屏幕的细胞,因此您只有UIImageViewUITableViewCell个实例可见UIView

您的问题是由于Dim Shell As Object: Set Shell = CreateObject("WScript.Shell") Dim oFSO As Object: Set oFSO = CreateObject("Scripting.FileSystemObject") Dim objExcel As Application: Set objExcel = CreateObject("Excel.Application") Dim myworkbook As Workbook, worksheetcount As Long Set myworkbook = objExcel.Workbooks.Open("C:\Temp\Test.xlsx") On Error Resume Next worksheetcount = myworkbook.Worksheets.Count If Err.Number <> 0 Then ShowError myworkbook.Close False End If s一次最多只能有一个超级视图。因此,每次将单个实例添加到单元格时,它都会从前一个单元格中删除。这就是为什么你只在最后一个单元格上看到它的原因。

答案 1 :(得分:0)

我认为你误解了iOS如何绘制图像。您将需要在显示图像的每个位置创建多个UIImageViews,但您可以(并且应该)重用您的UIImage对象,这就是真正消耗内存的内容。

因此,在cellForRowAtIndexPath方法中,只需创建一个imageView并将其设置为您已加载的图像。

重复使用图片,而不是imageViews。