Подтвердить что ты не робот

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?

4b9b3361

Ответ 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 hereenter image description here

Ответ 7

Ты не сказал, что хочешь увидеть прошлую строку. Если вы просто хотите увидеть фон окна, тогда просто вставьте свой вид таблицы в UIView, который достаточно высок, чтобы показать количество строк, которые вы хотите увидеть. Если вы хотите видеть больше строк без прокрутки, вам нужно будет отрегулировать размер отображаемого представления в зависимости от количества строк.

Ответ 8

Чтобы программно удалить его, используйте следующее: [yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];