未调用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
- 创建新的UITableViewController
- 仅复制UITableViewCell
- 清除所有约束条件(不确定您是否需要此项,但对我来说,它是一团糟)
- 在我的例子中,“添加缺少的约束”和“重置为建议约束”是一团糟,所以我手动添加它 顺便说一句,和datasource无关,您可以简单地向单元格中的某个标签添加一些foo内容来解决问题
- 也许这会对你有所帮助
我有以下资料:
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并在某个地方重用它,导致了这个问题 我的解决办法是
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