TableView прокручивается за последнюю ячейку

У меня есть 2 TableViews в ViewController, и я устанавливаю ограничения для них обоих. Я также устанавливаю ограничения и выравнивания. Проблема заключается в том, что при запуске выравнивания работают так, как ожидалось, однако, когда я выдвигаю TableView1 выше (чтобы опуститься на дно), он больше подталкивает последнюю ячейку (см. Скриншоты ниже).

Вот видео, показывающее проблему

И поведение горизонтального инспектора

Последнее обновление: я думал об обходном пути, но я не мог понять, как его применять. Если я могу получить y позицию последней строки внутри TableView, возможно, я могу заставить TableView не прокручиваться ниже «y position + height height». Есть ли способ, которым я могу это сделать?


Оригинальный вопрос :

Он работает нормально, когда он запускается и кажется ожидаемым, поскольку нижняя строка / ячейка внизу прикреплена к нижней части TableView

введите описание изображения здесь

(Красный – TableView1, а Pink – TableView2)

Но когда прокручивается и достигает дна, прокручивается больше, чем нижняя ячейка. Вместо этого нижняя ячейка должна быть прикреплена к нижней части TableView1.

(Синий цвет фона TableView1)

введите описание изображения здесь

В чем может быть проблема? Как я могу заставить нижний TableViewCell TableView1 подключаться к нижней части TableView1, так что больше не прокручивается?

Обновление: я создал высоту 132 TableView1 и каждую строку 44. Это создает разрыв как тот же размер 44. Но я проверил numberOfRowsInSection , и счетчик как и ожидалось, а не +1.

Почему это может произойти?


Update2: Я уверен, что это не код, но вот код

Ограничения TableView1:

введите описание изображения здесь

 let sampleData = [ PreviewDetail(title: "Small"), PreviewDetail(title: "Medium"), PreviewDetail(title: "Large"), PreviewDetail(title: "Large") func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell:UITableViewCell? if tableView == self.TableView1 { cell = tableView.dequeueReusableCellWithIdentifier("TV1Cell", forIndexPath: indexPath) let previewDetail = sampleData[indexPath.row] cell!.textLabel!.text = previewDetail.title } return cell! } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { var count:Int? if tableView == self.TableView1 { count = sampleData.count } return count! } 

2 Solutions collect form web for “TableView прокручивается за последнюю ячейку”

Наконец, я нашел ответ. Странно, когда у меня есть «Палуба просмотров», как ..

 TabBarController -> NavBarController -> ViewController -> View -> 2xTableViews 

… это вызывало багги. Я попытался воссоздать проблему в фиктивном проекте, чтобы понять суть проблемы, и это вызывало ту же проблему и в фиктивном проекте.

Ответ:

Ответ: « Adjust Scroll View Insets «Отменить Adjust Scroll View Insets в «ViewController». Теперь все работает нормально.

Хотя в вашем коде ошибок нет, когда я пытался воссоздать сценарий, я не смог его воспроизвести. Я использовал два UITableViews равной ширины, и обе ячейки tableViews являются базовыми по умолчанию. Вот код.

 class ViewController: UIViewController { @IBOutlet var tableView1:UITableView! @IBOutlet var tableView2:UITableView! let data1 = ["First Table, Data 1","First Table, Data 2","First Table, Data 3","First Table, Data 4","First Table, Data 5","First Table, Data 6","First Table, Data 7","First Table, Data 8"] let data2 = ["Second Table, Data 1","Second Table, Data 2","Second Table, Data 3","Second Table, Data 4","Second Table, Data 5","Second Table, Data 6","Second Table, Data 7","Second Table, Data 8"] override func viewDidLoad() { super.viewDidLoad() tableView1.dataSource = self tableView2.dataSource = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } extension ViewController:UITableViewDataSource { func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if tableView.isEqual(self.tableView1) { return data1.count } else if tableView.isEqual(self.tableView2) { return data2.count } return 0 } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { if tableView == self.tableView1 //if tableView.isEqual(self.tableView1) { let cell = tableView.dequeueReusableCellWithIdentifier("Cell1") cell?.textLabel?.text = data1[indexPath.row] return cell! } else { let cell = tableView.dequeueReusableCellWithIdentifier("Cell2") cell?.textLabel?.text = data2[indexPath.row] return cell! } } } 
  • scrollToRowAtIndexPath: atScrollPosition вызывает просмотр таблицы для «прыжка»
  • Swift 3: Как удалить серые области снимка экрана UITableView
  • Ошибка SIGSEGV IOS - UiGestureRecognizer в UITableView
  • Кнопка UITableViewCell не получает тег при вставке новой строки
  • UILabel sizeThatFits не работает
  • Изменение ширины TableView или TableViewCell
  • UITableView: перемещение строки в пустой раздел
  • UITableView - настройка табличного представления с данными Hpple
  • Сгруппированный вид таблицы - расстояние между разделами
  • Swift - стиль разделителя UITableView
  • Заголовки заголовков раздела UITableView исчезают при прокрутке
  • iOS - представление таблицы - статические ячейки (сгруппированные) - изменить цвет текста заголовка раздела
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.