所以我的UICollectionView有2个单元格:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
var imageCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as? CollectionViewCell
var videoCell = collectionView.dequeueReusableCellWithReuseIdentifier("cellVideo", forIndexPath: indexPath) as? CollectionViewCell
if (imageCell != nil) { // Image Cell
println("image cell exist")
return imageCell!
}
if (videoCell != nil) { // Video Cell
println("video cell exist")
return videoCell!
}
}
不知怎的,我收到错误Missing return in a function expected to return 'UICollectionViewCell'
。当我同时返回if
时,为什么会这样?我可能认为这是因为我使用返回2次,或者?
修改:
我也试过这个,但也不起作用:
var myUrl = "Url to file from web"
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
var imageCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as? CollectionViewCell
var videoCell = collectionView.dequeueReusableCellWithReuseIdentifier("cellVideo", forIndexPath: indexPath) as? CollectionViewCell
if myUrl.rangeOfString(".png") != nil{ // If string contains .png it should use a imageCell
println("exists")
return imageCell!
}
if myUrl.rangeOfString(".mp4") != nil{ // If string contains .mp4 it should use a videoCell
println("exists")
return videoCell!
}
}
答案 0 :(得分:1)
您可能会遇到 imageCell == nil 和 videoCell == nil 的情况。
在这种情况下,您的代码目前不会返回任何内容。如果您确定其中一个不会是零,可以尝试类似
$str = 'tina=gdjf==5=?hdhfg=oliver-people';
$last = end(explode('=',$str));
print $last;
/* will output
oliver-people
*/
答案 1 :(得分:0)
如果满足条件,您只能返回一个单元格。如果两个if语句都没有运行,则根本不返回任何内容。 (在所有情况下都必须返回一个单元格)
如果没有满足任何条件,请确保返回了一个单元格,这通常被认为是默认的返回值。
尝试在方法中使用if,else if,else,这样您将始终返回一个单元格,如果您的imageCell!= null,您将阻止不必要的条件检查。
至于你的实际方法,我不确定这对于cellForItemAtIndexPath方法是否是正确的实现。但我会回答你的问题......:D