在swift中单击单元格时,使用新数组元素重新填充tableview

时间:2015-05-02 08:33:03

标签: ios uitableview swift nsarray

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

提前致谢 - 到目前为止,这位新手的帮助非常棒。

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

}

}

2 个答案:

答案 0 :(得分:0)

这样做:

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

        catRet = XnYCategories.mainCats(catRet[row])

        tableView.reloadData()

    }

答案 1 :(得分:0)

在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 ***
}