在Swift IOS中使用不同的按钮隐藏行

时间:2016-05-29 22:57:22

标签: ios swift

我是swift 2的新手,我有2个按钮,我希望每个按钮关闭我的表视图中的特定单独行。 我有第一个If语句工作,但我的第二个IF语句我无法工作,我不知道如何正确实现它。 任何帮助将不胜感激。

var PickerMaterialViewHidden = true

var PickerPostViewHidden = true


override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if indexPath.section == 0 && indexPath.row == 2 && PickerMaterialViewHidden {
        return 0
    }
    else {
        return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
    }

    if indexPath.row == 5 && PickerPostViewHidden {
        return 0
    }
    else {
        return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
    }

}


@IBAction func ToggleMaterialPickerView(sender: AnyObject) {
    PickerMaterialViewHidden = !PickerMaterialViewHidden
    tableView.beginUpdates()
    tableView.endUpdates()
}

@IBAction func TogglePostPickerView(sender: AnyObject) {
    PickerPostViewHidden = !PickerPostViewHidden
    tableView.beginUpdates()
    tableView.endUpdates()

}    

1 个答案:

答案 0 :(得分:0)

为你heightForRowAtIndexPath尝试

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

    if indexPath.section == 0 && indexPath.row == 2 && PickerMaterialViewHidden {
        return 0
    }

    if indexPath.row == 5 && PickerPostViewHidden {
        return 0
    }

    return super.tableView(tableView, heightForRowAtIndexPath: indexPath)

}

并尝试更改为平滑动画

@IBAction func ToggleMaterialPickerView(sender: AnyObject) {
    PickerMaterialViewHidden = !PickerMaterialViewHidden
    UIView.animateWithDuration(0.3, animations: { () -> Void in
            self.tableView.beginUpdates()
            self.tableView.endUpdates()
        })
}