将单元格文本标签设置为通过委托函数传递的文本

时间:2017-01-10 21:43:21

标签: ios swift

我有一些文本传递给我的视图控制器,我正在尝试将单元格标签文本设置为此。

class oneViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate, TypingDelegate {
    @IBOutlet var tableView: UITableView!

    var someText:String = ""

    ...

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

        print("TextA: \(someText)")

        let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell")
        cell.textLabel.text = someText

        return cell
    }

    ...

    func data(passedData:String) {
        someText = passedData
        print("TextB: \(someText)")
    }

    ...

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "showSecondVC" {
            let sendingVC:OtherViewController = segue.destination as! OtherViewController
            sendingVC.myDelegate = self
        }
    }
}

当我运行此代码时,我得到:

TextB: "pizza"
TextA: ""

似乎超过了"披萨"被覆盖到""每次加载视图。如何从委托函数中获取传递的数据并将单元格文本标签设置为该值?

修改

这是另一个的代码(发送VC):

protocol TypingDelegate {
    func data(passedData:String)
}

class TypingViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchResultsUpdating, UISearchBarDelegate, UISearchControllerDelegate {

    var myDelegate:TypingDelegate? = nil

    ...

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

        tableView.deselectRow(at: indexPath, animated: false)
        if myDelegate != nil {
            let passedData = "pizza"
            myDelegate?.typingData(passedName: passedName)
            searchController.isActive = false
            performSegue(withIdentifier: "showOtherVC", sender: self)
        }
    }

    ...

}

由于

1 个答案:

答案 0 :(得分:0)

在表视图加载后调用委托函数可能会导致意外行为。

在调用委托函数后,只需执行此操作即可重新加载tableView

<div>
    @Html.Action("BestStudent", "Student")
</div>

请注意,这会将每个单元格的文本标签设置为 func data(passedData:String) { someText = passedData print("TextB: \(someText)") tableView.reloadData() } 。使用集合类型(数组,字典)来存储您可以根据indexPath的行属性(someText

读取的有序值