自 Xcode 5.1 升级以来,我在 tableview 委托中遇到了一些麻烦。
在我的应用程序中,我有一些表格视图,它们的某些单元格中有选择器。这些单元格仅在用户想要更改选择器的值时显示。当您要更改约会日期时,与日历中的用法相同。
问题在于,在 Xcode 5.1 和 iOS 7.1 中,即使高度设置为 0,带有选取器的单元格也始终显示。
tableView:cellForRowAtIndexPath
我找到的解决方法是在例程开始时测试单元格高度。
任何想法 ?
自 Xcode 5.1 升级以来,我在 tableview 委托中遇到了一些麻烦。
在我的应用程序中,我有一些表格视图,它们的某些单元格中有选择器。这些单元格仅在用户想要更改选择器的值时显示。当您要更改约会日期时,与日历中的用法相同。
问题在于,在 Xcode 5.1 和 iOS 7.1 中,即使高度设置为 0,带有选取器的单元格也始终显示。
tableView:cellForRowAtIndexPath
我找到的解决方法是在例程开始时测试单元格高度。
任何想法 ?
您是否尝试过裁剪内容视图的边界?例如 cell.contentView.clipsToBounds = YES; cell.clipsToBounds = YES;
或者如果在 InterfaceBuilder 中,对于 Table View Cell 的 View 属性,请检查 Clip Subviews
有两种方法可以做到这一点......
零高度单元
如果您确实使用这种方法,请不要忘记设置clipsToBounds
为YES
. 否则内容将绘制在单元格之外。您应该在contentView
,上检查/设置它contentView.superview
。
不要使用零高度单元
不需要时不要包含这些单元格。然后当你需要这个单元格时,只需通过...插入它
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
...当它不再需要时,通过...删除它
- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
我不知道您如何设置单元格的高度,但遵循 UITableViewDelegate 的方法应该可以
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
BOOL isHidden = // .... your code
return isHidden ? 0 : another_height;
}