未调用UITableView方法cellForRowAtIndexPath

未调用UITableView方法cellForRowAtIndexPath,uitableview,swift,Uitableview,Swift,我的UITableView未显示任何数据。我认为问题在于: override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell?` 这是我的代码: override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPa

我的
UITableView
未显示任何数据。我认为问题在于:

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell?`
这是我的代码:

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
    // Configure the cell...
    let cellId: NSString = "Cell"
    var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellId) as UITableViewCell

    if let ip = indexPath {
        //var data: NSManagedObject = myList[ip.row] as NSManagedObject
        //cell.textLabel.text = data.valueForKey("name") as String
        cell.textLabel.text = "Hi"
    }
    return cell
}
我在youtube上看过使用此代码的教程,但我无法让它正常工作

首先,我认为这是我的数组的一个问题,但当我把文本放进去时,它仍然没有显示任何内容

我正在运行Xcode6 beta 3,但这段代码在beta 2中运行得非常好

我没有任何警告或错误消息

编辑:我查阅了我的一些其他Swift项目,我在那里得到了相同的功能,它在两周前就工作了,但现在也不工作了。也许这是Xcode6 beta 3的问题

我的类属于
UITableViewController
类型

编辑:我浏览了苹果开发者论坛,看到了更新到xCode 6 beta 3后出现的相关问题,所以xCode 6 beta 3可能有问题


编辑:不会调用该方法。

必须确保正确分配了数据源,并且使用了正确的方法签名。你宣布一些选项错了

func tableView(tableView: UITableView!,
cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { }

您需要实现此功能,否则永远不会调用
cellForRowAtIndexPath

override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
  // Return the count of the number of rows in the table
  return 5
}

5
当然只是一个例子。您将返回数组中元素数的计数。

似乎没有解决方案。返回到xCode 6 beta 2修复了该问题。希望并有可能在Beta 4中进行修补。

明白了

我也有同样的问题——我也在uiviewcontroller中添加了一个tableview,但它也不起作用,但我现在知道了问题所在

如果您在interface builder上添加tableview并在“添加缺少的约束”之后单击,它将添加无法一起工作的约束

在我的位置上,我的整个uiview上都有tableview,单击“添加缺少的约束”后,它将在此处添加以下内容:

现在,如果您删除一个尾随或前导对齐,它将起作用-cellforrowatindexPath将被调用!我不知道为什么会这样,但它会起作用的


希望我能帮助您。

我在UITableView上也遇到了这个问题,我也设置了数据源并将其委托给表视图,但没有调用我的
CellForRowatineXpath
方法

解决方案:

  • 我的网络阻止了我的方法(使用防火墙)。我询问了我的网络管理员,并获得了对网络的完全访问权,然后调用了我的
    cellForRowIndexPath
    方法

  • 当我的响应来自web服务时,由于网络块响应为黑色,所以未调用
    cellForRowIndexPath
    方法


    • 也许这会对你有所帮助

      我有以下资料:

      self.myTableView.rowHeight=60
      在函数heightforheaderin部分:返回60
      未调用CellForRowatineXpath

      如果在heightForHeaderInSection中返回值>=60,则不会调用cellForRowAtIndexPath

      即使设置self.myTableView.rowHeight=59(或59或58),如果在heightForHeaderInSection中返回值>=60,也不会调用cellForRowAtIndexPath

      因此,我返回一个值XCode版本6.3.1(6D1002)。我刚刚遇到这个问题,在我的情况下,我复制了UITableViewController并在某个地方重用它,导致了这个问题

      我的解决办法是

    • 创建新的UITableViewController
    • 仅复制UITableViewCell
    • 清除所有约束条件(不确定您是否需要此项,但对我来说,它是一团糟)
    • 在我的例子中,“添加缺少的约束”和“重置为建议约束”是一团糟,所以我手动添加它
    • 顺便说一句,和datasource无关,您可以简单地向单元格中的某个标签添加一些foo内容来解决问题


      HTH

      当我将在Xcode 8.2.1中开发的旧Swift 2.3代码迁移到在Xcode 8.3中开发的Swift 3.0时,我遇到了同样令人沮丧的问题,对我来说,numberOfRows被调用了

      func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
         return 2
      }
      
      但是主数据源方法永远不会被调用

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

      主要的问题是我通过Swift代码创建的UITableView没有添加到任何视图中,它被添加了,但后来被另一个视图替换,因此从未调用数据源方法。希望对某人有所帮助。

      也许您在初始化中声明了委托:

      -(instancetype)init{
      self = [super init];
      if(self){
          _tableView.delegate = self;
          ,...
          }
      return self;
      
      - (void)viewDidLoad {
      [super viewDidLoad];
      _tableView.delegate = self;
      
      }

      应该在视图中调用它

      -(instancetype)init{
      self = [super init];
      if(self){
          _tableView.delegate = self;
          ,...
          }
      return self;
      
      - (void)viewDidLoad {
      [super viewDidLoad];
      _tableView.delegate = self;
      
      ,。。。 }

      我在tableView中缺少下划线作为第一个参数


      它也可能需要覆盖。如果覆盖有效,您将知道是否正确描述了func。

      检查您是否有以下行:

      tableView.delegate = self
      tableView.dataSource = self
      

      如果未实现
      dataSource=self
      ,则可能是未调用
      cellForRowAt indexPath
      方法的原因。您需要为表视图设置高度约束。您可以在情节提要中进行设置,也可以通过编程方式进行设置。如果您需要,我将发布一个运行示例。

      确保您具有UITableView对象的setup delegate和datasource属性。

      您需要在编辑模式下在
      viewDidLoad

      tableView.setEditing(true, animated: true)
      

      您是否已在表视图中注册了单元标识符?是的,我已注册了单元标识符数据源已正确分配,并且使用您的方法签名,它仍然没有显示任何内容:(该方法是否被调用?我设置了一个断点,是的,该方法没有被调用,其他方法确实被调用。在主详细信息模板中,它是这样声明的
      override func tableView(tableView:UITableView,cellforrowatinexpath indexath:NSIndexPath)->UITableViewCell
      -另一个签名来自文档…即使它没有被称为“操作”这就是问题所在,我忘了更新我的问题。抱歉。显示如何设置您的
      tableView.dataSource
      。在我的Swift项目中,我在
      viewDidLoad()中设置了
      tableView.dataSource=self
      )我的
      UITableViewController
      子类的
      。我连接了da