快速切换行的条件数字和标签



我在Swift中有一个UITableView行填充代码,如下所示。问题出现在第二部分,第2行是有条件存在的。如果flag为false,则所有后续行向上移动一个单元格,因此第3行变为第2行。我想知道是否可以在Swift switch语句中方便地指定这一点,而不是使用蛮力方法,在这种方法中,我根据标记true或false编写2个switch语句?

switch indexPath.section {

case 0:
cell.leftLabel.text = "Row 0";

case 1:

switch indexPath.row {

case 0:
cell.leftLabel.text = "Setting1"


case 1:
cell.leftLabel.text = "Setting2"


case 2:
/* Conditionally present row */
if flag {
cell.leftLabel.text = "Setting3"
}

case 3:
cell.leftLabel.text = "Setting4"

...
}

我不完全确定整个用例,但这里有一些改进,您可以使用switch case使这件事变得更容易。

  • 首先,可以同时对rowsection使用基于元组的switch
  • 其次,将布尔运算符和case一起使用,这使整个比较更容易接近,并删除了嵌套的if/else和casing结构

,这样的东西会进一步帮助你

switch (indexPath.section, indexPath.row) {
case (0, _):
cell.leftLabel.text = "Row 0"      
case (1, 0):
cell.leftLabel.text = "Setting1"                       
case (1, 1):
cell.leftLabel.text = "Setting2"                        
case (1, 2) where flag:
cell.leftLabel.text = "Setting3"
case (1, 2): // no flag here
cell.leftLabel.text = "Setting3 without flag"        
case (1, 3):
cell.leftLabel.text = "Setting4"

...   
}

最新更新