У меня есть два ViewController, первый из которых содержит tableView и отображает данные в нескольких разделах и строках. Когда пользователь нажимает на определенную строку внутри определенного раздела, он будет перенаправлен на второй View Controller, где будет отображаться дополнительная информация о выбранной ячейке. Чего я хочу добиться, так это когда пользователь go возвращается от второго контроллера представления к первому, я хотел бы, чтобы tableView автоматически прокручивал до местоположения последней выбранной ячейки пользователем (т.е. go назад, где он оставил). tableView в). Я использую протокол для передачи информации от второго контроллера представления к первому, который будет использоваться для отображения данных внутри tableView.
Это код, который я пытался достичь того, что упомянул выше, однако, пользователь не выполняет прокрутку до последней выбранной ячейки.
Код внутри контроллера первого вида:
import UIKit
class firstViewController: UIViewController {
var sortBy: String = "None"
var isSearching: Bool = false
var filtersApplied: Bool = false
var originalUniversalBeamsArrayDataExtractedFromTheCSVFileUsingTheParserContainingAllData = [IsectionsDimensionsParameters]()
var universalBeamsDataArrayReceivedFromFilterDataVCViaProtocol = [IsectionsDimensionsParameters]()
var universalBeamsDataArrayReceivedFromSortDataVCViaProtocol = [IsectionsDimensionsParameters]()
var universalBeamsDataArrayAsPerTypedSearchCriteria = [IsectionsDimensionsParameters]()
var universalBeamsArrayContainingAllSectionSerialNumberOnlyDefault: [String] = []
var universalBeamsArrayContainingAllSectionSerialNumberOnlySortedInAscendingOrDescendingOrder: [String] = []
let universalBeamsTableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
setupTableView()
view.addSubview(universalBeamsTableView)
}
extension BlueBookUniversalBeamsVC: ProtocolToPassDataBackwardsFromDataSummaryVcToPreviousVc {
func dataToBePassedUsingProtocol(modifiedArrayContainingAllUBsDataToBePassed: [IsectionsDimensionsParameters], modifiedArrayContainingSectionSerialNumbersDataToBePassed: [String], passedSortBy: String, passedFiltersApplied: Bool, passedIsSearching: Bool, passedSelectedTableSectionNumberFromPreviousVc: Int, passedSelectedTableRowNumberFromPreviousVc: Int) {
self.sortBy = passedSortBy
self.isSearching = passedIsSearching
self.filtersApplied = passedFiltersApplied
if sortBy == "None" && isSearching == false && filtersApplied == false {
originalUniversalBeamsArrayDataExtractedFromTheCSVFileUsingTheParserContainingAllData = modifiedArrayContainingAllUBsDataToBePassed
universalBeamsArrayContainingAllSectionSerialNumberOnlyDefault = modifiedArrayContainingSectionSerialNumbersDataToBePassed
} else if (sortBy == "Sorted by: Section Designation in ascending order" || sortBy == "Sorted by: Depth of Section in ascending order" || sortBy == "Sorted by: Width of Section in ascending order" || sortBy == "Srted by: Area of Section in ascending order" || sortBy == "Sorted by: Section Designation in descending order" || sortBy == "Sorted by: Depth of Section in descending order" || sortBy == "Sorted by: Width of Section in descending order" || sortBy == "Srted by: Area of Section in descending order") && isSearching == false && filtersApplied == false {
universalBeamsDataArrayReceivedFromSortDataVCViaProtocol = modifiedArrayContainingAllUBsDataToBePassed
universalBeamsArrayContainingAllSectionSerialNumberOnlySortedInAscendingOrDescendingOrder = modifiedArrayContainingSectionSerialNumbersDataToBePassed
} else if sortBy == "None" && isSearching == false && filtersApplied == true {
universalBeamsDataArrayReceivedFromFilterDataVCViaProtocol = modifiedArrayContainingAllUBsDataToBePassed
} else if sortBy == "None" && isSearching == true && filtersApplied == false {
universalBeamsDataArrayAsPerTypedSearchCriteria = modifiedArrayContainingAllUBsDataToBePassed
}
self.universalBeamsTableView.scrollToRow(at: IndexPath.init(row: passedSelectedTableRowNumberFromPreviousVc, section: passedSelectedTableSectionNumberFromPreviousVc), at: UITableView.ScrollPosition.top, animated: true)
self.universalBeamsTableView.reloadData()
}
}