2016-05-14 4 views
1

次のように私は、静的なテーブルビューを持っている:複数の 'If'ステートメントを正しく使用していますか?

enter image description here

私はUIViewのは、30個のピクセルの情報バーセルを99個のピクセルの固定の高さを持つようにしたい、50の70個のピクセルとバナーセルの&タイマーラベルを開始ピクセル。

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

ステートメントではなくスイッチケースを使用します。 –

答えて

2

は、私はこのように同じコードを実装するかもしれません:

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

このアプローチでは余分な変数を使用しますが、可能であれば単一のreturn文を使用することをお勧めします。 – bneely

関連する問題