在 swift 中单击单元格时使用新的数组元素重新填充表格视图

re-populating a tableview with new array elements when a cell is clicked in swift

感谢您迄今为止提供的所有帮助。当单击 UITableView 中的单元格时,我需要使用从另一个 class 中读取的数组重新填充视图 - 只是可以找到刷新视图的方法。代码如下:

提前致谢 - 迄今为止的帮助对这位新手来说非常有用。

import UIKit

class  SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet var tableView: UITableView!

let textCellIdentifier = "TextCell"

var catRet = XnYCategories.mainCats("main")

//var catRet = XnYCategories.subCats("Sport")
    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate = self
    tableView.dataSource = self
}

// MARK:  UITextFieldDelegate Methods
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1

}

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath) as! UITableViewCell

    let row = indexPath.row
    cell.textLabel?.text = catRet[row]
    return cell

}

// MARK:  UITableViewDelegate Methods
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    tableView.deselectRowAtIndexPath(indexPath, animated: true)
    let row = indexPath.row
    //let currentCell = tableView.cellForRowAtIndexPath(indexPath)
    //var selectedText = currentCell!.textLabel?.text
    //println(selectedText)
    let catRet2 = XnYCategories.mainCats(catRet[row])
    println(catRet2)
    println(catRet[row])

    //catRet = catRet2

}

}

就这样做:

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
        let row = indexPath.row

        catRet = XnYCategories.mainCats(catRet[row])

        tableView.reloadData()

    }

按如下方式在您的 tableView 上调用 reloadData()

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    tableView.deselectRowAtIndexPath(indexPath, animated: true)
    let row = indexPath.row
    //let currentCell = tableView.cellForRowAtIndexPath(indexPath)
    //var selectedText = currentCell!.textLabel?.text
    //println(selectedText)
    let catRet2 = XnYCategories.mainCats(catRet[row])
    println(catRet2)
    println(catRet[row])

    // *** New code added ***
    // remove the comment
    catRet = catRet2

    // call reloadData()
    tableView.reloadData()
    // *** New code added ***
}