DataSource似乎正在工作,但tableView没有重新加载

时间:2014-11-07 01:43:39

标签: ios xcode swift tableview datasource

我遇到了tableView根据数据源正确更新的问题。我正在使用带有故事板的标签式应用程序结构。

我的总体目标是在第二个选项卡上显示一个tableView,显示从存储在结构中的数组中删除的项目。这些项目将从第一个选项卡添加到数组中。

有2个ViewControllers(1用于滚动项目并选择删除它们,1用于处理tableView)和2个视图(1用于滚动项目并删除它们的界面和1对于tableView)。第一个选项卡用于提供用于删除项目的界面,第二个选项卡用于tableView

删除和添加到数组功能是有效的,而不是在tableView中显示它。

目前,如果我在"已移除的项目" 数组中对项目进行硬编码,则它们会显示在tableView中。问题是,当我从第一个removeItem中的ViewController函数向数组添加项目时,tableView不会更新,只会显示硬编码项目。

这使我假设我正确地拥有了我的数据源和委托设置,因为tableView正在从预期的数据源获取数据。问题是,当用户使用新项目更新数组时,它没有更新。

我尝试使用self.tableView.reloadData()但没有成功。我可能不会在正确的位置打电话。

我不确定断开连接的位置。

这是我的第二个控制tableView的视图控制器

class SecondViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {


let cellIdentifier = "cellIdentifier"

var removedTopicsFromList = containerForRemovedTopics()

@IBOutlet var tableView: UITableView!



override func viewDidLoad() {
    super.viewDidLoad()

    self.tableView?.registerClass(UITableViewCell.self, forCellReuseIdentifier: self.cellIdentifier)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}

// UITableViewDataSource methods

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return removedTopicsFromList.removedTopics.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier(self.cellIdentifier) as UITableViewCell
    cell.textLabel!.text = self.removedTopicsFromList.removedTopics[indexPath.row]
    return cell
}

这是存储删除短语的结构

struct containerForRemovedTopics {

var removedTopics: [String] = []

}

1 个答案:

答案 0 :(得分:0)

结构实例总是按值传递。因此,如果您的代码类似于:

var removedTopicsFromList = secondViewController.removedTopicsFromList
removedTopicsFromList.removedTopics.append("SomeTopic")
secondViewController.reloadData()

然后你正在改变不同的结构。

我猜你可能会遇到这个问题。