2012-01-28 85 views
0

我想添加一個自定義的底部邊框到我使用UIImageView,我在運行時以編程方式添加到單元格的所有我的tableview單元格。問題在於,當用戶滾動時,邊框會隨機消失。動態添加邊框子視圖到UITableViewCell

此代碼是在我的cellForRowAtIndexPath方法:

UIImageView* border = (UIImageView*)[cell viewWithTag:10]; 
if (border) 
    [border removeFromSuperview]; 

NSInteger sectionRows = [tableView numberOfRowsInSection:[indexPath section]]; 
NSInteger row = indexPath.row; 

if (row != sectionRows - 1) { 
    UIImageView* border = [[UIImageView alloc] initWithImage:[[ImageManager sharedManager] imageNamed:@"dashed_border"]]; 
    [border setFrame:CGRectMake(10, [self tableView:tableView heightForRowAtIndexPath:indexPath], 290, 1)]; 
    [border setTag:10]; 
    [cell addSubview:border]; 
    [border release]; 
} 

它,如果它存在,刪除一個邊界子視圖,並且如果該行不是最後一行,則在該行的底部插入邊界。

我不確定這是否是一種競爭條件,或者是否有某些時候cellForRowAtIndexPath在用戶滾動時未被調用。

+0

該節中的行數是否曾經改變? – smparkes 2012-01-28 01:43:17

+0

無論你做什麼,你最好不要總是刪除邊框和重新添加它,這似乎是最常見的情況。相反,只有當它在那裏,你纔是最後一行。通常情況下,這樣簡單的事情不會有什麼大不了的,但在表格視圖單元格中,你不想做任何你不需要的工作。 – smparkes 2012-01-28 01:45:17

+0

不,行數根據集合中的項目數設置。 – James 2012-01-28 01:51:25

回答

1

可能下面的單元格繪製在邊界的頂部。它取決於表格視圖中子視圖的順序以及滾動時的順序更改。

發生這種情況是因爲您在單元格邊界之外添加了邊框。嘗試將它移動1px。像:

[border setFrame:CGRectMake(10, [self tableView:tableView heightForRowAtIndexPath:indexPath] - 1, 290, 1)]; 
相關問題