2011-07-13 336 views
0

我對此感到困惑。我將與我的代碼UITableViewCell中的重疊子視圖

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 


    NSNumber *cellno=[NSNumber numberWithUnsignedInteger:indexPath.row]; 
    imgView = [[UIImageView alloc] initWithFrame:CGRectMake(240, 13, 15,18)]; 
    imgView.image=[UIImage imageNamed:@"lock.png"]; 

    tickView = [[UIImageView alloc] initWithFrame:CGRectMake(200, 13, 15,18)]; 
    tickView.image=[UIImage imageNamed:@"tick.png"]; 

    switch (indexPath.row) { 
    case 0: 
     [email protected]"apples"; 
     if ([appDelegate.connected containsObject:cellno]) { //condition 
      [cell.contentView addSubview:tickView]; 
     }else{ 
      [cell.contentView addSubview:imgView]; 
     } 
     break; 
    } 
    cell.accessoryType=UITableViewCellAccessoryDetailDisclosureButton; 
    return cell; 
} 

解釋在第一時間內的tableview加載「imgView」子視圖加入到細胞中的內容視圖和一些手術後的「如果」條件被滿足,並且「tickView」被添加。

問題是,oldview沒有隱藏或刪除,因此這兩個圖像出現。

幫助將不勝感激

Both the tickview and imgView appears

+0

你必須小心添加和刪除,因爲單元格被重用。 – karim

回答

0

而是在cellForRowAtIndexPath方法創建imgView和tickView意見,當你創建單元格,並與細胞重新使用它們創建它們。然後你可以這樣做:

... 

if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    imgView = [[UIImageView alloc] initWithFrame:CGRectMake(240, 13, 15,18)]; 
    imgView.image=[UIImage imageNamed:@"lock.png"]; 

    tickView = [[UIImageView alloc] initWithFrame:CGRectMake(200, 13, 15,18)]; 
    tickView.image=[UIImage imageNamed:@"tick.png"]; 
} 

... 


if ([appDelegate.connected containsObject:cellno]) { //condition 
    [imgView removeFromSuperview]; 
    [cell.contentView addSubview:tickView]; 
}else{ 
    [tickView removeFromSuperview]; 
    [cell.contentView addSubview:imgView]; 
} 
+0

對不起。我不關注。當你說創建單元格時創建視圖時,你是什麼意思? – Neelesh

+0

現在你每次調用cellForRowAtIndexPath時都會分配/初始化一個新的UIImageView和新的UIImage。大概你不會每次都分配/初始化一個新的UITableViewCell(你的代碼已經被省略了,所以我無法確定)。它是否正確? – highlycaffeinated

+0

是的..我已經添加完整的代碼現在.. – Neelesh