UITableViewCell内的UIView变换不起作用

时间:2015-06-13 14:50:08

标签: ios iphone swift uitableview uiview

我在UITableViewCell中有这个向上箭头按钮,单击时可以旋转180度,或者在其他地方调用该方法。当您单击按钮并更新sender.transform时,这实际上有效。

@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引用按钮并旋转它。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

您有两种不同的选择。

如果您创建write的自定义子类,则可以向该按钮添加一个插座到该单元格。询问表格视图中的单元格,将其转换为自定义类,然后使用插座到按钮(SELECT game_id, COUNT(*) AS roundsCount, COUNT(CASE WHEN winner = player1_id THEN 1 END) As p1WinsCount FROM games AS g INNER JOIN rounds AS r ON g.Id = r.game_id GROUP BY game_id )。

另一个选项是为按钮添加唯一标记,然后使用UITableViewCell。然后将结果从UIView转换为UIButton。

使用myCustomCell.button的自定义子类和插座更干净,更不易碎,但需要设置更多工作。

答案 1 :(得分:0)

至少,Duncan建议打印出来让我走上正轨。无论如何,一旦我意识到发送者和来自单元格的arrowButton具有不同的地址并且它至少在cellForRowAtIndexPath中旋转一次,我决定将该第一个arrowButton对象保存在其他地方,然后将其用于转换。像这样:

var saveArrowButton: UIButton?

在cellForRowAtIndexPath委托方法中:

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

在rotate方法中:我正在引用saveArrowButton!.transform。到目前为止似乎有效。