【问题标题】:My TableView datasource functions aren't being called and I don't know why我的 TableView 数据源函数没有被调用,我不知道为什么
【发布时间】:2020-08-26 12:12:23
【问题描述】:

所以我有一个 UITableView,你可以拖到视图控制器中,而不是 tableviewController。我在 viewDidLoad 中将委托属性设置为 self:

    searchTableView.delegate = self
    searchTableView.isHidden = true
    searchTableView.isUserInteractionEnabled = false

我在故事板中添加了一个原型单元格,其标识符为“SearchResultCell”。这是我的 tableview 数据源函数:

extension MapViewController: UITableViewDelegate, UITableViewDataSource {

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    searchCompleter.queryFragment = searchBar.searchTextField.text!
    let completionResults = searchCompleter.results
    return completionResults.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    searchCompleter.queryFragment = searchBar.searchTextField.text!
    let completionResults = searchCompleter.results
    print(completionResults)

    let cell = tableView.dequeueReusableCell(withIdentifier: "SearchResultCell", for: indexPath)

    cell.textLabel?.text = completionResults[indexPath.row].subtitle

    return cell
}

}

实际上没有调用这些函数中的任何代码。 (别担心,isHidden 和 isUserInteractionEnabled 函数会在我调用表视图函数之前切换,所以这不是问题)我想我没有将这些函数连接到我的特定 UITableView,但我不知道还有什么除了我已经完成的将委托设置为 self 之外,还要做些什么。非常感谢有关如何调用这些的任何建议!

这是我的视图控制器的图片,因此您可以查看缺少约束或定位是否存在问题:

【问题讨论】:

  • 另加searchTableView.dataSource = self
  • 刚刚添加了它,但我的代码仍然没有被调用
  • 它们必须标记为@objc。
  • 我刚刚用@objc 标记了函数,但它仍然无法正常工作

标签: ios swift xcode function uitableview


【解决方案1】:

还需要添加

searchTableView.dataSource = self

【讨论】:

  • 刚刚添加了,但它仍然没有被调用:(
  • 这很奇怪,为什么它没有被调用但由于某种原因它仍然没有被调用是完全有道理的
【解决方案2】:

您也可以在情节提要中设置两个连接

但是,我认为您还有另一个问题 - 我认为您不能在 MapViewController 中嵌入 UITableView - 这是关于其他人的讨论Implementing UITable in MapView

我认为您的解决方案是使用包含 Map 和 Table 的 UIViewController - 您可以使其看起来与您已有的相同。

【讨论】:

  • 感谢您的更新!我会阅读链接,但恐怕我刚刚命名为 mapViewController。这实际上是您已经建议的内容,一个带有 mapview 和一个 tableview 的视图控制器,这使得它看起来好像我在这里没有解决方案了哈。如果您再次有任何其他想法,不胜感激
  • @derek 由于 tableview 大小问题,他们可能不会被调用,它是否正确定位在屏幕上?
  • @VitaliiShvetsov 实际上这是一个问题,所以也许这就是它的原因。它在屏幕上,但是当我运行模拟器时,它会被向下推一点并进入屏幕中间。如何确保其正确定位?
  • @derek 如果它被按下,我猜约束是不正常的(也许你忘了添加translatesAutoResizingMasksIntoConstraints,显示你如何定位它
  • 我没有补充,是tableview的属性还是别的什么?这里我会展示它是如何定位的:编辑等待我如何在这里发布图片?
【解决方案3】:

确保completionResults.count 不等于 0。

【讨论】:

  • 这不是因为当我将相同的代码放入我的 searchBar textDidChange 函数并打印 completionResults 时,我会返回大量数据。只是由于某种原因没有调用数据源函数。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
相关资源
最近更新 更多