我有一个包含两行的静态表。第一行有一个开关。我只想在开关打开的情况下启用第二行。当开关关闭时隐藏行。
第二行有标签和文本字段。它们都有自动布局限制。
我正在硬编码第二行的高度,如下所示
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
}
它正在做我想要的但我得到以下错误/警告。
无法同时满足约束条件。可能至少有一个 以下列表中的约束条件是您不想要的。
我知道不是创建零高度行,而是可以直接隐藏行。但它在桌子上留下了很大的空白空间。我不想这样做。我想创建零高度行,但我也想删除警告。
答案 0 :(得分:0)
对于静态表,您的方法是正确的。您可能需要检查如何设置约束,并添加一些属性来更改某些约束的值。
catch(FileNotFoundException exeption)
{
System.out.println("Le nom de fichier placé en paramètre est incorrect");
exeption.printStackTrace();
}
和
IBOutlet NSLayoutConstraint *_cellVerticalSpaceConstraint;
如果您有动态单元格,可以根据需要创建带有xib的自定义单元格,或者以编程方式创建它。我会使用自定义单元格来处理此场景,因为您可能希望捕获文本字段的事件并触发其他方法。有很多这样的例子:
要添加/删除行,您可以使用以下代码:
_cellVerticalSpaceConstraint.constant = 0;
insertIndexPaths& deleteIndexPaths是NSIndexPaths的数组,如下所示:
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];