我正在尝试使用静态UiTableViewController构建表单 - 我想实现IOS7显示方法来显示UIPickerView / UidateView内联,但由于表是静态的而不是动态的,因此证明是有问题的。
无论如何 - 我在这个问题中遵循了Aaron Bratcher的解决方案 - iOS 7 - How to display a date picker in place in a table view? -
看起来它非常合适 - 我唯一的问题是我的表格单元格具有不同的高度 - 所以我需要为日期选择器行返回200或0的高度 - 但是对于其他一切他们需要保持其当前状态身高 - 我不确定这是编码的最好方法 - 我需要引用当前的单元格并且基本上说除非你的pickerRow保持原样吗?
这是我到目前为止所得到的 -
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 5 && indexPath.row == 1) { // this is my picker cell
if (_editingStartTime) {
return 220;
} else {
return 0;
}
} else {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
//return THE CURRENT CELLS HEIGHT
}
}
不确定我如何访问上面单元格的高度 - 甚至不知道该逻辑是否会在heightForRowAtIndexPath中执行我想要的操作?任何想法?
干杯
答案 0 :(得分:1)
在静态tableView中,您可以向super询问故事板中是否存在单元格的高度。
e.g:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
/* ... */
else {
CGFloat height = [super tableView:tableView heightForRowAtIndexPath:indexPath];
return height;
}
}
对于其他dataSource方法也是如此,因此您也可以从- tableView:numberOfRowsInSection:
中删除一些代码。
答案 1 :(得分:0)
尝试
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == 5 && indexPath.row == 1) { // this is my picker cell
if (_editingStartTime) {
return 220;
} else {
return 0;
}
} else {
return self.tableView.rowHeight;
}
}
答案 2 :(得分:0)
UITableViewCell
类是UIView
的子类,因此它基本上是一个具有自己的框架的视图。如果您告诉表格视图单元格保持原样,则应访问其框架属性:
return cell.frame.size.height;
但是如果你想让那个特定的细胞具有与其他细胞相同的高度,你应该
return tableView.rowHeight;
正如左轮手枪所说的那样。您可能已经从Interface Builder设置了rowHeight属性,或者您可以在代码中明确设置它。