2015-06-13 66 views
0

我有這個向上的箭頭按鈕裏面的UITableViewCell應該旋轉180度時單擊或當方法被調用到別處。當你點擊按鈕並更新sender.transform時,這實際上起作用。UITableViewCell內的UIView轉換不起作用

@IBAction func rotate(sender: UIButton) { 

if (top) 
{ 
    UIView.animateWithDuration(0.5, animations: { 
     sender.transform = CGAffineTransformMakeRotation((360.0 * CGFloat(M_PI))/180.0) 
    }) 

} 
else 
{ 
    UIView.animateWithDuration(0.5, animations: { 
     sender.transform = CGAffineTransformMakeRotation((180.0 * CGFloat(M_PI))/180.0) 
    }) 

} 

}

如果我更改代碼,讓我引用按鈕,而不是從的UITableViewCell到這樣的事情,這是行不通的。該按鈕不旋轉。

IBAction func rotate(sender: UIButton) { 

let detailCell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0)) as! DetailCell 

if (top) 
{ 
    UIView.animateWithDuration(0.5, animations: { 
     detailCell.arrowButton.transform = CGAffineTransformMakeRotation((360.0 * CGFloat(M_PI))/180.0) 
    }) 

} 
else 
{ 
    UIView.animateWithDuration(0.5, animations: { 
     detailCell.arrowButton.transform = CGAffineTransformMakeRotation((180.0 * CGFloat(M_PI))/180.0) 
    }) 

} 

}

基本上,我希望能夠從的UITableViewCell在不涉及點擊按鈕的另一種方法旋轉按鈕,所以我需要能夠從的UITableViewCell引用按鈕並旋轉它。什麼是正確的方法來做到這一點?

回答

0

你有幾個不同的選擇。

如果您創建了UITableViewCell的自定義子類,那麼您可以向該單元添加一個插座按鈕。詢問單元格的表格視圖,將其轉換爲您的自定義類別,然後使用出口到按鈕(myCustomCell.button)。

另一個選項是添加一個唯一的標籤到按鈕,然後使用cell.contentView.viewWithTag(tagNumber)。然後將結果從UIView轉換爲UIButton。

使用UITableViewCell的自定義子類和一個插座更乾淨,更脆弱,但更多的工作來設置。

+0

我可能沒有指定它,但是arrowButton是我自定義的UITableViewCell中的一個IBOutlet。我期待發件人和detailCell.arrowButton是相同的,都應該旋轉。只有來自IBAction的發件人纔會旋轉,並且只有在操作來自點擊時纔可用。如果我點擊,而不是發件人,我專門引用了單元格中的箭頭按鈕,它什麼也不做。 – inquiringmind

+0

你可能有一個破損的插座。日誌arrowButton。我敢打賭它是零。 –

+0

我不認爲它是零,但我沒有登錄它。當我把它放在cellForRowAtIndexPath中時,它不會做動畫,但它將它旋轉180度,但即使我嘗試重新加載數據並根據某個標誌旋轉它,我也無法再次旋轉它。 – inquiringmind

0

至少,鄧肯讓我打印出正確的曲目。無論如何,一旦我意識到發件人和單元格中的箭頭按鈕具有不同的地址,並且它至少在cellForRowAtIndexPath中旋轉一次,我決定將第一個箭頭按鈕對象保存在其他地方,然後將其用於轉換。事情是這樣的:

var saveArrowButton: UIButton? 

在的cellForRowAtIndexPath委託方法:

if (saveArrowButton == nil) 
{ 
    saveArrowButton = detailCell.arrowButton 
    } 

而且在旋轉的方法:我引用saveArrowButton .transform!這似乎工作到目前爲止。