-1

我的主要目標是創建一個具有少量自定義屬性的展開/摺疊tableview。我的邏輯和配置如下:UIButton圖像不是UITableViewCell裏面的動畫

  1. 我在UITableViewCell上使用AutoLayout,並在其中添加了一個帶有箭頭圖像的UIButton。我在這裏使用UIButton是因爲圖像是一個模板圖像,我需要在不寫一行代碼的情況下進行着色,而UIImageView在着色圖像時不起作用,除非通過代碼完成。
  2. 關於tableView委託的[tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath],我寫了我的邏輯來打開(插入行)和/或摺疊(刪除行)。
  3. 展開和摺疊功能調用的自定義的UITableViewCell與按鈕的方法裏面使用下面的代碼動畫箭頭:

     
    [UIView beginAnimations:@"rotateDisclosure" context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    self.buttonArrow.transform = CGAffineTransformMakeRotation(M_PI_2); 
    [UIView commitAnimations]; 
    

我遇到的問題是,動畫不管用。

但是我把它從[tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath]稱爲動畫作品。

我試圖在動畫裏面的按鈕轉換代碼後加阻止沒有成功如下:

  1. [myCell setNeedsDisplay];
  2. [myCell setNeedsLayout];
    [myCell layoutIfNeeded];

如果你知道我做錯了還是什麼真正發生的事情以及我如何能夠完成上述工作,請描述一下。

謝謝!

+0

您正在使用一種非常古老的動畫方法。您應該在UIView上使用基於塊的方法。 – Abizern

+0

您可以通過設置斷點來確保單元中的代碼是從didSelectRowAtIndexPath調用的嗎?我已經嘗試過動畫代碼,它的工作原理似乎並不成問題。 –

+0

@Abizern我不認爲問題在於我使用舊的方法。我使用基於塊的方法,它給出了相同的結果。 –

回答

0

以下@pallzoltan答案,我已經在一個單獨的項目中嘗試過我自己,並發現我正在使用錯誤的方法來檢索有問題的單元格。我沒有使用cellForRowAtIndexPath:,而是將該單元格出列在indexPath處。

我在上面的問題中沒有提供太多的信息,這就是爲什麼大多數人沒有明確指出問題的原因。