UITableView返回不同的单元格

时间:2017-10-02 23:22:15

标签: ios swift uitableview

对于UITableView,我使用的是2个不同的单元格中的一个。第一个显示内容,第二个是一个简单的标签,表示如果数组为空,则没有内容。我也在切换一个分段控制器,它控制使用哪个阵列。我有两个单元格的课程。第二个只有一个标签的IBoutlet,它将根据分段控制器进行更改。我的代码如下所示:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    var returnValue = 0

    switch(mySegmentedControl.selectedSegmentIndex) {
    case 0:
        returnValue = accounts.count
        break
    case 1:
        returnValue = user.count
        break
    case 2:
        returnValue = mutual.count
    default:
        break
    }

    return returnValue
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "ConnectCell", for: indexPath) as! ConnectTableViewCell

    let cell2 = tableView.dequeueReusableCell(withIdentifier: "noUsersCell") as! NoUsersTableViewCell

    switch(mySegmentedControl.selectedSegmentIndex) {
    case 0:
        let user = self.accounts[indexPath.row]

        cell.user = user
        cell.selectionStyle = UITableViewCellSelectionStyle.none
        cell.delegate = self

        break

    case 1:
        let user = self.user[indexPath.row]

        cell.user = user
        cell.selectionStyle = UITableViewCellSelectionStyle.none
        cell.delegate = self

        break

    case 2:
        let user = self.mutual[indexPath.row]

        cell.user = user
        cell.selectionStyle = UITableViewCellSelectionStyle.none
        cell.delegate = self

        break

    default:
        break
    }

    return cell
}

我刚刚添加了“cell2”,因为这是迄今为止的一项新功能。我相信我必须使用numberOfRowsInSection检查数组是否为空,如果它为空则返回1,然后在CellForRowAt的情况下放置条件以检查数组是否为空,然后使用cell2。然后我可以更改cell2的文本。但是,我不知道休息后如何返回单个cell2。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我会用两个部分来做。使用第0部分作为实际数据,第1部分使用" no content"细胞

如果第1部分中没有行,则以下仅显示第2部分("无内容")。

{{1}}

答案 1 :(得分:0)

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    let count = myArray.count
    switch count {
        case 0:
            return 1
        default:
            return count
    }
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let count = myArray.count
    switch count {
    case 0 :
        let cell = ..... NoContentCell
        return cell
    default: 
        let cell = ... ContentCell // and in here do your other cells.
        return cell
    }
}

这应该可以解决问题