如何在aTableView的部分中快速选择单元格

时间:2019-05-22 21:15:59

标签: swift uitableview interface-builder uistoryboardsegue uitableviewsectionheader

我正在使用情节提要的表视图中的部分,在其中选择部分中的单元格将引导我到另一个屏幕。我已经做到了,但是我觉得我使用了太多的代码,必须看到一种更好的开发方式,我已经看到类似的出版物尝试这样做,here我找到了这个答案

  

部分和部分中的项目数量会改变吗?如果不是这样,则无需代码即可创建静态单元格并将每个单元的连接挂接到不同的目的地(全部在Interface Builder中完成)。

正是我的情况,我会对这种形式感兴趣。我有固定的数据,不会改变。现在,我尝试以可能的最佳方式开发此功能,而不是目前的方式。 我必须强调,我是敏捷开发的新手。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        switch indexPath.section {
        case 0:
            switch indexPath.row{
            case 0:
                self.performSegue(withIdentifier: "goToCreateAccountViewController", sender: nil)
                break
            case 1:
                break
            case 2:
                break
            default:
                break
            }
            break

        case 1:
            switch indexPath.row{
            case 0:
                break
            case 1:
                break
            case 2:
                break
            default:
                break
            }
            break

        case 2:
            break

        case 3:

            break

        default:
            break
        }
    }

cellForRow:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell : UITableViewCell = UITableViewCell(style: UITableViewCell.CellStyle.subtitle, reuseIdentifier: "item_option")
        cell.textLabel?.text = options[indexPath.section][indexPath.row]
        cell.imageView?.image = UIImage(named: "icon-myprofile")
        cell.textLabel?.font = cell.textLabel?.font.withSize(14)
        return cell
    }

3 个答案:

答案 0 :(得分:0)

您可以将巨人switch缩短为

switch (indexPath.section, indexPath.row) {
    case (0,0):
        self.performSegue(withIdentifier: "goToCreateAccountViewController", sender: nil)
    default:
        break
}

答案 1 :(得分:0)

我认为您可以使用情节提要来做到这一点:

enter image description here

首先将视图控制器和单元格添加到UITableView,然后在右上角将TableView内容设置设置为Static Cells。之后,只需添加segue:

enter image description here

答案 2 :(得分:0)

如果要处理switch,请使用multiple cases语句。

但是从代码中可以明显看出,您仅处理single condition。在这种情况下,我看不到需要使用switch statement

您可以轻松地使用简单的if statement来使它正常工作。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if indexPath.section == 0 && indexPath.row == 0  {
        self.performSegue(withIdentifier: "goToCreateAccountViewController", sender: nil)
    }
}