Рывок при прокрутке, когда tableView внутри tableview Swift - PullRequest
0 голосов
/ 04 октября 2018

Я использую UITableview внутри tableView для одного из моих экранов.Здесь у меня есть один, InstalmentMainTableViewCell и InstalmentInnerTableViewCell.

Я использовал приведенный ниже код для прокрутки внутренней tableView на полную высоту:

class InnerTableView: UITableView {
    override var intrinsicContentSize: CGSize {
        //This is for extra space after inner tableview size. can be required
        self.layoutIfNeeded()
        return self.contentSize
    }
}

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

Вот полный код:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    switch (tableView.tag) {
    case 100:
        return instalmentModel.count == 0 ? 0 : instalmentModel.count
    default:
        return instalmentModel[currentInstalmentIndex].EMIDetailModel.count == 0 ? 0 : instalmentModel[currentInstalmentIndex].EMIDetailModel.count
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    switch (tableView.tag) {
    case 100:

        currentInstalmentIndex = indexPath.row

        let cell = tableView.dequeueReusableCell(withIdentifier: InstalmentsMainTableViewCell.className) as! InstalmentsMainTableViewCell

        if let model = self.instalmentModel[indexPath.row] as InstalmentModel? {

            if tableView.visibleCells.contains(cell) {
                self.putValue(self.yearLabel, "\(String(describing: model.year!))")
            }
            cell.emiTotal,text = "\(model.year!)"
        }
        return cell

    default:

        let cell = tableView.dequeueReusableCell(withIdentifier: InstalmentsInnerTableViewCell.className) as! InstalmentsInnerTableViewCell

        if let model = self.instalmentModel[self.currentInstalmentIndex].EMIDetailModel[indexPath.row] as EMIDetailModel? {

            cell.indicatorView.backgroundColor = UIColor.red
        }
        return cell
    }
}

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {

    let indexPath = self.instalmentsTableView.indexPathsForVisibleRows?[0]
    if let model = instalmentModel[(indexPath?.row)!] as InstalmentModel? {
        putValue(yearLabel, "\(model.year!)")
    }
}

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    self.view.layoutIfNeeded()
    self.view.setNeedsLayout()
}

Требование: Требование для tableView внутри tableview

...