无法同时满足静态表的约束

时间:2015-10-26 17:44:59

标签: ios uitableview uiswitch heightforrowatindexpath swift2.1

我有一个包含两行的静态表。第一行有一个开关。我只想在开关打开的情况下启用第二行。当开关关闭时隐藏行。

第二行有标签和文本字段。它们都有自动布局限制。

我正在硬编码第二行的高度,如下所示

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

    if indexPath.section == 0 && !reminderSwitch.on {

        if indexPath.row == 1  {

            return 0.0

        }

    }

    return 44.0

}

它正在做我想要的但我得到以下错误/警告。

  

无法同时满足约束条件。可能至少有一个   以下列表中的约束条件是您不想要的。

我知道不是创建零高度行,而是可以直接隐藏行。但它在桌子上留下了很大的空白空间。我不想这样做。我想创建零高度行,但我也想删除警告。

1 个答案:

答案 0 :(得分:0)

对于静态表,您的方法是正确的。您可能需要检查如何设置约束,并添加一些属性来更改某些约束的值。

catch(FileNotFoundException exeption)
{
    System.out.println("Le nom de fichier placé en paramètre est incorrect");
    exeption.printStackTrace();
}

IBOutlet NSLayoutConstraint *_cellVerticalSpaceConstraint;

如果您有动态单元格,可以根据需要创建带有xib的自定义单元格,或者以编程方式创建它。我会使用自定义单元格来处理此场景,因为您可能希望捕获文本字段的事件并触发其他方法。有很多这样的例子:

https://medium.com/@musawiralishah/creating-custom-uitableviewcell-using-nib-xib-files-in-xcode-9bee5824e722#.ukw4zn30o

要添加/删除行,您可以使用以下代码:

_cellVerticalSpaceConstraint.constant = 0;

insertIndexPaths& deleteIndexPaths是NSIndexPaths的数组,如下所示:

[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];