委托通过后无法将数据加载到tableview
Posted
技术标签:
【中文标题】委托通过后无法将数据加载到tableview【英文标题】:Can't load data to tableview after it has been passed with delegation 【发布时间】:2016-06-07 18:19:27 【问题描述】:我将一个带委托的数组传递给 tableviewcell,在那里我有 tableview。然后我将此数组分配给现有数组,以便它应该加载到 tableview。但它似乎是空的。请帮忙!
func passArray(steps: [Step])
self.array = steps
print(steps)
func numberOfSectionsInTableView(tableView: UITableView) -> Int
return 1
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return array.count
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CellTableViewCell
cell.textView.text = (array[indexPath.row] as! Step).text as String
print(11, array)
return cell
这里是我声明协议的地方
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
selectedRowIndex = indexPath
let cell = tableView.cellForRowAtIndexPath(indexPath) as! IdeaTableViewCell
editButton.frame = CGRect(x: cell.cellView.frame.size.width - 10, y: 15, width: 20, height: 20)
editButton.setImage(UIImage(named: "change.png"), forState: .Normal)
editButton.addTarget(self, action: "editButtonSegue", forControlEvents: .TouchUpInside)
cell.addSubview(editButton)
cell.cellViewText.text = "\(ideas[indexPath.row].valueForKey("text") as! String). And it is cool because \(ideas[indexPath.row].valueForKey("why") as! String) and it has \((ideas[indexPath.row].valueForKey("steps") as! [Step]).count) steps"
cell.cellViewTextBottomConstraint.constant = cell.tableView.contentSize.height + 16
cell.cellViewText.updateConstraintsIfNeeded()
cell.tableView.updateConstraintsIfNeeded()
cell.tableView.hidden = false
cell.tableView.beginUpdates()
cell.tableView.endUpdates()
delegate1?.passArray(ideas[indexPath.row].valueForKey("steps") as! [Step])
tableView.beginUpdates()
tableView.endUpdates()
【问题讨论】:
你能贴出你的代码吗? 我有点新,所以我不知道如何正确地做 你是在传递数组后重新加载 UITableview 吗?像这样:tableView.reloadData() 根据您的逻辑研究并实施ralfebert.de/tutorials/ios-swift-uitableviewcontroller self.table.reloadData() -> 使用这个方法。它会加载你的数据。 【参考方案1】:首先检查你的数组不能为空,并且在调用方法之后用值填充数组的位置
[self.yourTableViewName reloadData];
【讨论】:
func passArray(steps: [Step]) self.array = steps print(steps) 在这个方法中你的数组有值...??? func passArray(steps: [Step]) self.array = steps print(steps) tableView.reloadData() 它显示“意外发现 nil” 是的,它正在打印它的值 我认为你应该正确检查你的代码所有网点都已连接或适当地调用委托... 当我加载像在 IdeaTableViewCell 中创建的 ["ffef","fife"] 之类的数组时,它工作正常以上是关于委托通过后无法将数据加载到tableview的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 的数据啥时候加载?啥时间 tableview 调用它的委托方法。 viewWill 之后会出现吗?