行返回类型警告的Tableview高度

时间:2014-01-07 15:36:05

标签: ios uitableview ios7

在iPad Retina 64bit模拟器上运行Xcode 5.1(7.1 beta),我需要将返回类型更改为“double”,当在具有7.1 beta的设备上时,我必须将其更改为“float”。如果我在不更改类型的情况下运行应用程序,则单元格高度实际为0.有没有其他人看过或遇到此问题?我无法在网上找到任何相关信息。

- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if ([lastSelectedIndexPath isEqual:indexPath]) {
        return 310.0;
    } else {
        return 120.0;
    }
}

Compiler warning

2 个答案:

答案 0 :(得分:3)

您的方法应该返回CGFloat值,而不是float

答案 1 :(得分:3)

您只需要替换

中的方法行
-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
//^^^^^ The return type is incorrect, the whole line needs to be replaced 

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

这是因为Apple的heightForRowAtindexPath的默认委托方法需要使用CGFloat而不是float。您还可以通过进入.h文件,右键单击UITableViewDelegate或UITableViewDataSource协议来仔细检查您可能实现的未来委托方法,以查看Apple的完整方法构造列表以及如何调用,使用它们以及它们的返回类型是什么

有关使用CGFloat代替float以回应Wain评论的更多信息。 来自帖子Why to use CGFloat instead of float

“CGFloat只是float的一个typedef。这为CGFloat提供了一些不同的灵活性。这就是为什么使用它的未来代码。Objective-C用很多类型来做,NSInteger是另一个例子。“ - Jason McReary。

所以Apple喜欢使用这些类型def并鼓励开发人员这样做,以便在底层架构改变浮点数的处理方式时,您的代码可以成为未来的证明。