2016-12-31 31 views
1

我有一個TableView設置爲一個自定義單元類的迭代。每個單元格(在這兩個部分中)都包含一些標籤和一個按鈕。對於第二部分中的單元格,按鈕文本以編程方式設置爲「取消」,而第一部分中的按鈕文本設置爲不同。我已經設置了按鈕(用於細胞,其button.title等於「取消」)通過減小α值一旦按鈕被點擊,以變灰標籤文本如下如下:多個UITableViewCells受迭代按鈕的影響,儘管只有一個被按下?

@IBAction func mainPageCancelAction(_ sender: Any) { 
     if mainPageCancelButton.title(for: .normal) == "x"{ //1st section cell 
      mainPageCancelButton.setTitle("y", for: .normal) 
     } else if mainPageCancelButton.title(for: .normal) == "y"{//1st section cell 
      mainPageCancelButton.setTitle("x", for: .normal) 
     } else if mainPageCancelButton.title(for: .normal) == "Cancel"//2nd section cell { 
      mainPageUnattendCancelButton.setTitle("Canceled", for: .normal) 
      NameLabel.alpha = 0.3 
      CreatorLabel.alpha = 0.3 
      TypeLabel.alpha = 0.3 
     } 
} 

據我可以告訴,這個按鈕應該只在第二部分中將標籤變灰(通過降低阿爾法值),其中按鈕被設置爲「取消」。點擊這些第二節單元中的任何一個單元的按鈕確實會降低該單元的alpha值,但也是隨機的(我認爲它的隨機...)爲第一節單元格也標記了一些標籤,儘管它們不應該受到該行爲的影響,因爲他們不符合if Button.title(for: .normal) == "Cancel" if語句。他們的頭銜是x和y。不知道爲什麼會這樣。我認爲,儘管簡單化,儘管簡單化,我認爲第一部分標籤不會受到阿爾法值變化的影響,因爲它們的button.title永遠不會是「取消」。不知道爲什麼會發生這種情況,特別是因爲第二節單元格受到了影響;只有按下按鈕的單元格纔會變灰。

+1

您的手機在兩個部分都有相同的重複識別符嗎?難道第1節中再循環細胞的α值是使用第2節中設定的值嗎?當您創建每個單元格時,是否將Alpha值重置爲默認值? – Magnas

+0

@Magnas是的,他們有相同的重用標識符。它們是相同的單元格,只是將標籤根據部分設置爲不同的值。我將如何重置Alpha值? –

+0

@Magnas事實證明,只要按照您的建議來解決問題即可解決。將第一部分中的單元格的alpha值設置爲默認值1.0。 –

回答

0

按下按鈕時,其他單元格中的標籤是否會變灰?或者僅在滾動後?

如果發生滾動後發生問題可能與單元格被重用的事實有關。如果是這種情況,你應該確保細胞的狀態被重置爲合理的。一個好地方是在您的手機類中覆蓋prepareForReuse()

override func prepareForReuse() { 
    super.prepareForReuse() 

    nameLabel.alpha = 1 
    creatorLabel.alpha = 1 
    typeLabel.alpha = 1 
} 
+0

按下按鈕後灰色立即發生 –

+0

在這種情況下,我會檢查按鈕是否有多個目標。使用按鈕的allTargets屬性 - 應該只有一個。無意中多次調用addTarget(_:action:for :)會導致按鈕在點擊時調用多個目標上的操作。 – nils