IPhone UITableView: как удалить интервал между разделами в таблице стиля группы?
Я создаю представление таблицы, в котором есть 10 разделов, все из которых имеют вид заголовка, но не ячейки. Короче говоря, в моем представлении таблицы будут отображаться только 10 заголовков; в любом разделе не будет ячеек. Теперь, когда я делаю это, между заголовками заголовков разделов есть пробел. Я хочу удалить это пространство. Это возможно? Можете ли вы дать мне какой-нибудь намек или поработать над этим?
Вот методы источника данных:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 10;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 0;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UILabel * label = [[UILabel alloc] init];
label.backgroundColor = [UIColor grayColor];
return label;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 44.0f;
}
Вот скриншот выхода:
![enter image description here]()
У меня есть своя сложная причина, почему я делаю это так, что я не смогу объяснить с помощью письма. Все, что я хочу сделать, - не иметь промежутков в представлениях заголовка раздела. Заранее благодарю вас.
Ответы
Ответ 1
Попробуйте это.
self.tableView.rowHeight = 0; // in viewdidload
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; // in viewdidload
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01f;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return <your header height>;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc] initWithFrame:CGRectZero];
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return <your header view>;
}
Также есть таблица seprator как никто.
Ответ 2
Если вы возвращаете 0
в tableView:heightForFooterInSection:
, чем возвращается значение по умолчанию (возможно, 10.0). Это сложно, но вы можете использовать CGFLOAT_MIN
вместо 0
для удаления нижнего колонтитула.
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
Update:
Swift 3:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
Ответ 3
Попробуйте выполнить следующий код
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.25; // as for you need
}
вы также можете управлять с помощью метода делегата
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
Короче, вы можете управлять им двумя способами.
Ответ 4
Сгруппированный стиль tableview имеет нижний колонтитул по умолчанию, вы также должны настроить нижний колонтитул, чтобы перезаписать его
или
попробуйте простой стиль.
typedef enum {
UITableViewStylePlain,
UITableViewStyleGrouped
} UITableViewStyle;
Ответ 5
Вы можете сделать это непосредственно в интерфейсе, вы должны установить высоту нижнего колонтитула в 1 следующим образом:
![введите описание изображения здесь]()
Ответ 6
Измените стиль Table View с Grouped на Plain. Это решило мою проблему.
Ответ 7
Так что я не могу голосовать, но могу отправить ответ
Правильный ответ на этот счет фактически
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
Ответ 8
Вам нужно использовать метод heightForHeaderInSection. Вы также можете изменить его в зависимости от разных разделов, например. в некоторых разделах вам может потребоваться больше расстояния, а под некоторыми, вы не хотите показывать пробел. В таком случае вы можете использовать CGFLOAT_MIN, который равен 0,000001f. Приведя пример, как вы можете использовать другой раздел с разными высотами заголовков
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0 || section == 2)
{
return 55.0;
}
else
{
return CGFLOAT_MIN;
}
}
Надеюсь, это поможет вам.
Ответ 9
Попробуйте использовать это:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 0;
}
Как указано в комментариях, попробуйте использовать это:
self.tableView.rowHeight = 0;