UITableView показывает больше строк, чем указано в numberOfRowsInSection:
Я хочу, чтобы мой tableView отображал 6 строк с текстом в нем, в данном случае "Пример". Насколько я могу судить, у меня установлены настройки numberOfSectionsInTableView:
и numberOfRowsInSection:
. См. Пример кода ниже:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
// Return the number of rows in the section.
return 6;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = @"Example";
return cell;
}
Проблема заключается в том, когда вы видите изображение ниже, показывающее строки для строк, которые не должны/не существуют.
![enter image description here]()
Как мне избавиться от строк, отображающих прошлую строку 6?
Ответы
Ответ 1
общепринятый способ заключается в том, чтобы добавить нижний колонтитул с размером кадра CGRectZero, как таковой:
[tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]]
Это означает, что таблица содержит нижний колонтитул, и поэтому он перестает отображать разделительные линии. Однако, поскольку нижний колонтитул имеет CGRectZero в качестве своего фрейма, ничего не отображается, поэтому визуальный эффект заключается в том, что разделители просто останавливаются.
Ответ 2
Swift Версия
Самый простой способ - установить свойство tableFooterView:
override func viewDidLoad() {
super.viewDidLoad()
// This will remove extra separators from tableview
self.tableView.tableFooterView = UIView(frame: CGRect.zero)
}
Ответ 3
Это из-за вашей высоты стола. Погода у вас есть Запись
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
//Возвращает количество строк в этом разделе. return 6;
}
Но его строки показывают по размеру таблицы. Если вы не хотите показывать дополнительные строки, тогда сделайте UITableView Style Plain To Grouped.
Ответ 4
Короткий и простой ответ.
self.tableView.tableFooterView = [UIView new];
Ответ 5
Вы могли бы что-то сделать по строкам:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:7 inSection:0];
[self.mytableView cellForRowAtIndexPath:indexPath].hidden = YES;
Я уверен, что есть несколько лучших способов, но это первое, что приходило в голову.
Ответ 6
Если вы имеете в виду светло-серые линии, которые появляются ниже последней строки, это просто способ по умолчанию, когда UITableView
рисует разделитель строк.
Вы можете попробовать изменить стиль Separator в Interface Builder (см. изображения ниже), чтобы узнать, может ли один из них быть по своему вкусу.
![enter image description here]()
![enter image description here]()
Ответ 7
Ты не сказал, что хочешь увидеть прошлую строку. Если вы просто хотите увидеть фон окна, тогда просто вставьте свой вид таблицы в UIView, который достаточно высок, чтобы показать количество строк, которые вы хотите увидеть. Если вы хотите видеть больше строк без прокрутки, вам нужно будет отрегулировать размер отображаемого представления в зависимости от количества строк.
Ответ 8
Чтобы программно удалить его, используйте следующее:
[yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];