2015-08-28 44 views
1

我有一個tableView與自定義tableViewCell。每個單元格左側都有一個圖像(請參閱屏幕1)。自定義tableViewCell已被分類。每一行都有取決於indexPath.rowUITableView中的複選框更改和恢復圖像

如果我點擊圖像(S)在屏幕上,圖像應更改爲勾選框使用戶可以多選不同的圖像(見屏幕2)。如果我點擊迴帶勾的圖像上,它應該還原到原來的圖像在屏幕上1

Screen 1Screen 2

問題: 我知道如何改變形象,以刻度線,但不要」不知道怎麼回老圖像(請記住每一行都有不同的圖像 - 所以我下面的代碼中的「其他」部分是沒有意義的)。

下面是我的代碼更改,並恢復圖像

@IBAction func imageTap(sender: AnyObject) {  
    let imageView : UIImageView! = sender.view! as! UIImageView 
    if imageView.image != UIImage(named: "Oval 5"){ 
     imageView.image = UIImage(named: "Oval 5") 
     awardBadge.hidden = false 
    } 
    else // Need to figure out how to go back to same image 
    { 
     imageView.image = UIImage(named: "Oval 1") 
     awardBadge.hidden = true 
    } 
} 
+0

是否曾遇到過其他情況?我懷疑圖像比較是正確的方法,你應該添加一些屬性到單元格(或單元的容器來說明出隊等),包含它是否被檢查和包含應顯示的UIImage if它沒有被檢查。 – luk2302

+0

嘗試使用此爲了比較2的UIImage'FUNC等於(圖像1:UIImage的,圖像2:UIImage的) - >布爾{ \t \t後衛讓數據1 = UIImagePNGRepresentation(圖像1)其他{返回false} \t後衛讓數據2 = UIImagePNGRepresentation(圖像2)其他{返回false} \t \t回data1.isEqualToData(數據2) }'你也可能會覆蓋''==你 –

回答

2

添加一個名爲「isTicked」布爾,或類似的東西,你的細胞,並將其設置在選擇/取消選擇正確的價值。根據此值,您可以設置正確的圖像。讓細胞完成剩下的工作。

比較圖像使其不必要的複雜和表現不佳。

+0

可以請分享示例代碼 –

0
  1. 你應該跟蹤選定的項目。最簡單的方法是在視圖控制器的子類中定義一個布爾值數組。
  2. 定義委託你的UITableViewCell的子類,如:

    protocol MYCustomCellDelegate { 
    func didSelectedCell(cell: MYCustomCell) 
    } 
    

而且在你的控制器處理:

func didSelectedCell(cell: MYCustomCell) 
{ 
    let indexPath = tableView.indexPath(cell: cell) 
    selectedItems[indexPath.row] = !selectedItems[indexPath.row] 
    tableView.reloadItemsAtIndexPaths([indexPath]) 
} 
  • cellForItemAtIndexPath方法根據selectedItems[indexPath.row]設置您的細胞狀態。如果選擇顯示覆選框,如果它不是 - 圖片:

    override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { 
        let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as! MYCustomCell 
        cell.setTitle(titles[indexPath.row]) 
        cell.setSelected(selectedItems[indexPath.row]) 
        cell.delegate = self 
        return cell 
    } 
    
  • 0

    enter image description here我認爲你的做法是不同的,你爲什麼不使用自定義圖像按鈕,2倍不同的圖像表示選擇和正常狀態。可用狀態正常/突出顯示/選擇/禁用。當我們有自定義圖像按鈕時,由於您使用的是靜態圖像,因此您可以將圖像用於默認狀態,併爲選定狀態選中圖像。您只需使用內置屬性選定即可。

    +0

    問題是,我想select..so多當我選擇另一個圖像刻度標記遠離第一個圖像的那一刻..如果有一個soln請讓我知道..也沒有找到選擇狀態 - 只看到突出狀態 –

    +0

    檢查故事板,你應該有按鈕,在我的答案PFA –

    +0

    有沒有一種方式沒有使用按鈕 - 最終我想創建圖像使用drawRect? –