【发布时间】:2015-01-03 17:45:37
【问题描述】:
我遇到了一个问题,我的tableView 没有根据数据源正确更新。我正在使用带有 Storyboard 的选项卡式应用程序结构。
我的总体目标是在第二个选项卡上显示一个tableView,以显示从存储在结构中的数组中删除的项目。项目从第一个选项卡添加到数组中。
有2个ViewControllers(1个用于滚动项目并选择删除它们的界面,1个用于处理tableView)和2个视图(1个用于滚动项目并删除它们的界面,1个用于表视图)。第一个选项卡用于提供删除项目的界面,第二个选项卡用于tableView。
删除和添加到数组功能有效,只是不能在tableView 中显示。
目前,如果我在 "removed items" 数组中对项目进行硬编码,它们会显示在 tableView 中。问题是,当我在第一个ViewController 中将removeItem 函数中的项目添加到数组时,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] = []
}
【问题讨论】:
标签: ios xcode swift tableview datasource