我正在尝试为表格视图的第一行设置不同的样式。
我通过以下代码执行此操作:
def tableView(table_view, cellForRowAtIndexPath: index_path)
data_row = @data[index_path.row]
puts index_path.row
if index_path.row == 0
cell = table_view.dequeueReusableCellWithIdentifier(ITEM_CELL_ID) || begin
rmq.create(ItemCell, :first_cell, reuse_identifier: ITEM_CELL_ID).get
end
else
cell = table_view.dequeueReusableCellWithIdentifier(ITEM_CELL_ID) || begin
rmq.create(ItemCell, :rest_cell, reuse_identifier: ITEM_CELL_ID).get
end
end
cell.update(data_row)
cell
end
问题
然而,我对此感到非常奇怪。第一行确实有自定义样式....但第10行和第20行也是如此!我不知道为什么会这样。第2 - 9行和第11-19行与第0行和第10行和第20行不同。
答案 0 :(得分:0)
不确定你的方法是如何被调用的,所以也许这是不可能的......但是,我想这是从一个集合中调用的(或者有一个集合涉及堆栈的某个地方)。你能做这样的事吗:
#wherever you're calling this from
index_paths.each_with_index do |path, i| #add an 'index path'
tableView(table_view, cellForRowAtIndexPath: path, i)
...
end
#updated original method
def tableView(table_view, cellForRowAtIndexPath: index_path, path_index) #add path index
data_row = @data[index_path.row]
puts index_path.row
if path_index == 0 #add path index
cell = table_view.dequeueReusableCellWithIdentifier(ITEM_CELL_ID) || begin
rmq.create(ItemCell, :first_cell, reuse_identifier: ITEM_CELL_ID).get
end
else
cell = table_view.dequeueReusableCellWithIdentifier(ITEM_CELL_ID) || begin
rmq.create(ItemCell, :rest_cell, reuse_identifier: ITEM_CELL_ID).get
end
end
cell.update(data_row)
cell
end
答案 1 :(得分:0)
您需要为每种单元格类型使用不同的ITEM_CELL_ID
(reuseIdentifiers)。因此,:first_cell
样式化的单元格应该具有与reuseIdentifier
样式化单元格不同的:rest_cell
常量。这应该可以解决您的问题,因为您所看到的是第一个单元格的内存在表格滚动时反复重复使用。