正确使用多个“If”语句?

问题描述:

我有一个静态的TableView如下:正确使用多个“If”语句?

enter image description here

我想要的UIView有固定的99个像素,30个像素信息栏单元格高度,开始的70个像素&定时器标签和50横幅细胞像素。

所以我写了下面的代码:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    if indexPath.row == 0 {return 30 } 
    if indexPath.row == 2 { return 70 } 
    if indexPath.row == 3 { return 50 } 

    else { return tableView.frame.size.height - 249 } 
} 

这样一来,电影地带将始终填充可用屏幕的平衡。

我的代码有效。但是我想检查一下我做过的方式在“代码优雅”方面是否可以接受。

有没有一种更可接受的编码方式来达到我想要的效果?

感谢;)

+4

问的问题在这里 - > http://codereview.stackexchange.com/ –

+0

谢谢你的头了。 –

+0

使用开关盒而不是if语句。 –

我有可能实现相同的代码是这样的:

var height: CGFloat = 0 
switch indexPath.row { 
    case 0: height = 30 
    case 2: height = 70 
    case 3: height = 50 
    default: height = tableView.frame.size.height - 249 
} 
return height 
+1

更性感。谢谢你先生/女士;) –

+0

很喜欢这种方法,虽然我会直接返回值而不是使用变量。可能是个人喜好,但对我来说,这里的逻辑很难跟踪和验证。试试并询问“第2行的结果是什么”?你必须理解(并忽略 - 设置一个完全不相关的,从未使用过的数字)初始化,追踪与变量相关的头部新值,跟踪路径以查看是否有更多事情发生,找到返回,请记住它的价值。 – Eiko

+0

此方法使用额外的变量,但我更喜欢在可能的情况下使用单个返回语句。 – bneely