委托通过后无法将数据加载到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的主要内容,如果未能解决你的问题,请参考以下文章

更改数组后无法在 Tableview 中重新加载数据?

UITableView 的数据啥时候加载?啥时间 tableview 调用它的委托方法。 viewWill 之后会出现吗?

Swift-使用委托将数据附加到 CollectionView 中的 TableView

modalview 关闭后 TableView 未重新加载

带有委托复选框的 QML TableView 无法显示

JSON请求后以编程方式TableView不会重新加载数据