2012-07-27 19 views
1

我已經在我的單元的accessoryView中設置了一個uiview圖像,稍後我想刪除此視圖,以便accessoryType可以再次顯示爲無。以下不工作 -從UITableViewCell的附件中刪除視圖不工作

//create cell 
     UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath]; 

     //initialize double tick image 
     UIImageView *dtick = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"dtick.png"]]; 
     [dtick setFrame:CGRectMake(0,0,20,20)]; 
     UIView * cellView = [[UIView alloc] initWithFrame:CGRectMake(0,0,20,20)]; 
     [cellView addSubview:dtick]; 

//set accessory type/view of cell 
     if (newCell.accessoryType == UITableViewCellAccessoryNone) { 
      newCell.accessoryType = UITableViewCellAccessoryCheckmark; 
      } 
     else if(newCell.accessoryType == UITableViewCellAccessoryCheckmark){ 
       newCell.accessoryType = UITableViewCellAccessoryNone; 
       newCell.accessoryView = cellView; 
      } 
     else if (newCell.accessoryView == cellView) { 
      newCell.accessoryView = nil; 
      newCell.accessoryType = UITableViewCellAccessoryNone; 
      } 

我也試過[newCell.accessoryView reloadInputViews]但這並不工作。 >一個滴答聲 - - >雙勾(圖像) - >無蜱

任何幫助深表感謝,感謝

基本上我在對細胞點擊=>無蜱希望通過這些國家循環。

回答

5

有兩個問題與您的代碼:

  • newCell.accessoryView == cellView你用新 創建圖像視圖比較單元的附件觀點:這個比較決不屈服TRUE。

  • 當您將附件視圖設置爲圖像時,您還將類型設置爲UITableViewCellAccessoryNone,以便下一次將其再次設置爲UITableViewCellAccessoryCheckmark。換句話說,第二個else if塊永遠不會被執行。

下面的代碼可以工作(但我沒有嘗試,我自己):

if (newCell.accessoryView != nil) { 
    // image --> none 
    newCell.accessoryView = nil; 
    newCell.accessoryType = UITableViewCellAccessoryNone; 
} else if (newCell.accessoryType == UITableViewCellAccessoryNone) { 
    // none --> checkmark 
    newCell.accessoryType = UITableViewCellAccessoryCheckmark; 
} else if (newCell.accessoryType == UITableViewCellAccessoryCheckmark) { 
    // checkmark --> image (the type is ignore as soon as a accessory view is set) 
    newCell.accessoryView = cellView; 
} 
+0

確定這完美。謝謝! – insrtSmthHere 2012-07-29 00:22:30