我有一些文本传递给我的视图控制器,我正在尝试将单元格标签文本设置为此。
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)
}
}
...
}
由于
答案 0 :(得分:0)
在表视图加载后调用委托函数可能会导致意外行为。
在调用委托函数后,只需执行此操作即可重新加载tableView
<div>
@Html.Action("BestStudent", "Student")
</div>
请注意,这会将每个单元格的文本标签设置为 func data(passedData:String) {
someText = passedData
print("TextB: \(someText)")
tableView.reloadData()
}
。使用集合类型(数组,字典)来存储您可以根据indexPath的行属性(someText
)