Swift:如何访问所选表视图单元格的值

问题描述 投票:0回答:1

如何访问用户选择的表格视图的单元格的值?我知道如何在用户未搜索的情况下访问该值,因为我只能访问我的数组的IndexPath的值,但是当用户搜索某些内容时却无法访问,因为townArray不会与正在搜索的单元格对齐如图所示。

为了让您更好地理解,请说我有一系列水果,其中有[苹果,香蕉,桔子]。如果用户搜索香蕉,则唯一显示文本(结果)的单元格将显示香蕉。如果然后尝试访问水果的IndexPath元素,则会得到苹果,因为它是水果的第一个元素,而香蕉是显示的第一个元素。我想要的是在用户选择香蕉并搜索“香蕉”而不是苹果时访问值香蕉。我知道这可能令人困惑,但是如果您对我如何解决此问题有任何想法,请告诉我。

ios swift uitableview indexof
1个回答
0
投票
var searchedResult: [Fruit] = yourSearchingFunction()
tableview.reloadData()

在TableView重新加载新的水果集合后,IndexPaths将正确刷新

说明显示为以下代码:

class ViewController: UIViewController {

    @IBOutlet private weak var tableView: UITableView!
    private var originalFruits: [Fruit] = [] // This data is used to cache
    private var fruits: [Fruit] = [] //  This data is used to display on TableView

    // MARK: - View Cycle
    override func viewDidLoad() {
        super.viewDidLoad()

        setupTableView()
        setupData()
    }

    private func setupData() {
        // Loading all fruits at the first time [Apple, Banana, ... ]
        originalFruits = yourSetupDataFunctionToFetchAllFruitsAtTheFirstTime() 
        fruits = originalFruits
        tableView.reloadData()
    }

    @IBAction private func actionTapToSearchButton(_ sender: Any) {
        let searchingKey = searchTextField.text
        if searchingKey.isEmpty {
            fruits = originalFruits
        } else {
            fruits = yourSeacrchingFruitsFunction(searchingKey)
        } 
        tableView.reloadData()
    }
}

// MARK: - UITableViewDataSource
extension ViewController: UITableViewDataSource {

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return fruits.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if let cell = tableView.dequeueReusableCell(withIdentifier: FruitCell.identifier) as? FruitCell {
            return cell
        }
        return UITableViewCell()
    }
}

// MARK: - UITableViewDelegate
extension ViewController: UITableViewDelegate {

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.