我已经查看了很多关于如何UITableViewCell
通过覆盖来隐藏静态的示例heightForRowAtIndexPath
,虽然我现在已经让它工作了,但它看起来很麻烦,我想看看我是否做错了什么。
我有一个UITableViewController
大约有 8 行的表格视图。我的应用程序中的这个屏幕显示了一个对象,例如,一行是描述,一个是图像,一个是地图视图,等等。所有的行都是静态的。
在某些情况下,显示的某些对象没有地图,因此我想隐藏包含mapview
. 由于它是一个静态行,我在想通过为该行设置一个出口属性(例如@property (weak, nonatomic) IBOutlet UITableViewCell *mapViewRow;
),然后我可以以某种方式将该行的高度设置为 0 或将该行隐藏在viewDidLoad
or中viewWillAppear
。但是,似乎唯一的方法是重写该heightForRowAtIndexPath
方法,这有点烦人,因为我需要在我的代码中硬编码地图行的索引,例如
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 6 && self.displayItem.shouldHideMap) {
return 0;
}
return [super tableView:tableView heightForRowAtIndexPath:indexPath];
}
当然,没什么大不了的,但只是在 a 中调整静态行大小的整个方式tableview
似乎违背了首先在情节提要中设置它们的意义。