我想将nil
返回tableView:heightForFooterInSection:
,但这是不允许的。有没有办法将nil
作为CGFloat返回?
你为什么要这样做?
我正在测试tableView如何使用标题和视图混合作为sectionFooters。对于一个页脚,我需要使用自定义视图,但对于另一个页脚,我有3或4个句子的文本,我喜欢系统如何设置样式并调整页脚的大小以适应。但是,只要我实现heightForFooterInSection
(viewForFooterInSection
所需),带标题的页脚就不会自动调整大小以适合给定的文本。我正在努力避免为直文建立自定义视图。
答案 0 :(得分:6)
原始值没有nil
这样的东西。您可以尝试返回0.0f
,但我不知道UITableView如何响应。它可能只是完全隐藏视图。假设您想要为一个页脚返回自定义视图,则需要返回所有页脚的自定义视图。
答案 1 :(得分:3)
正如其他人所提到的那样,浮动没有nil
这样的东西。
然而,Ugly Hacks部门为您带来:NaN - “NaN”是浮点位模式的特殊保留值,表示“非数字”。
不知道UITableView会对NaN做什么,但在其他情况下,它可以指定float
变量没有值。
如果你不告诉任何人你有什么想法,这里是代码:
CGFloat myNan = nanf(NULL);
答案 2 :(得分:2)
简答:不。
长答案:'nil'是指向任何内容的指针,用于代替指向对象的指针。 CGFloat是一种标量数据类型,而不是Objective-C类,通常不与指针一起使用(或者它将是CGFloat *)。
答案 3 :(得分:0)
我迟到了,但这可能对某人有用。
像其他人说的那样,你不能将nil返回给基元,但是你可以做两件事之一,以区分非设定值和设定值。
使用NSNotFound
- (CGFloat)calculateHeight {
// calculate height...
if (heightInvalid) return NSNotFound;
else return validFloatValue;
}
NSNotFound是由Apple定义的巨大数字,并且在某些操作中被他们使用。然后你可以检查一下,如:
if ([self calculateHeight] == NSNotFound) ...
NSNumber
而不是返回CGFloat
使您的函数返回NSNumber
。
- (NSNumber *)calculateHeight {
// calculate height...
if (heightInvalid) return nil;
else return @(validFloatValue);
}
然后,你可以返回nil。
收到你的价值时:
NSNumber *myHeightNumber = [self calculateHeight];
if (!myHeightNumber) NSLog(@"height is invalid... do something");
else myHeight = [myHeightNumber floatValue];
我希望有所帮助。