1

自 Xcode 5.1 升级以来,我在 tableview 委托中遇到了一些麻烦。

在我的应用程序中,我有一些表格视图,它们的某些单元格中有选择器。这些单元格仅在用户想要更改选择器的值时显示。当您要更改约会日期时,与日历中的用法相同。

问题在于,在 Xcode 5.1 和 iOS 7.1 中,即使高度设置为 0,带有选取器的单元格也始终显示。

tableView:cellForRowAtIndexPath我找到的解决方法是在例程开始时测试单元格高度。

任何想法 ?

4

3 回答 3

2

您是否尝试过裁剪内容视图的边界?例如 cell.contentView.clipsToBounds = YES; cell.clipsToBounds = YES;

或者如果在 InterfaceBuilder 中,对于 Table View Cell 的 View 属性,请检查 Clip Subviews

于 2014-03-13T09:03:10.030 回答
2

有两种方法可以做到这一点......

零高度单元

如果您确实使用这种方法,请不要忘记设置clipsToBoundsYES. 否则内容将绘制在单元格之外。您应该在contentView,上检查/设置它contentView.superview

不要使用零高度单元

不需要时不要包含这些单元格。然后当你需要这个单元格时,只需通过...插入它

- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

...当它不再需要时,通过...删除它

- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
于 2014-03-13T09:00:13.677 回答
0

我不知道您如何设置单元格的高度,但遵循 UITableViewDelegate 的方法应该可以

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    BOOL isHidden = // .... your code
    return isHidden ? 0 : another_height;
}
于 2014-03-13T09:15:30.367 回答