有没有一种更清洁的方法来部分填充tableView

时间:2019-02-03 18:11:35

标签: swift uitableview

我有一个带有自定义单元格的tableView,该单元格带有两个标签和两个UITextField,有时我的tableView的行数为X,但是我只需要填充前三个UITextFields。

要解决这个问题,我目前正在检查差异cellForRowAt,并像这样附加空字符串

if tableView.numberOfRows(inSection: 0) > someArray.count {
                var difference = tableView.numberOfRows(inSection: 0) - someArray.count
                while difference > 0 {
                    someArray.append("")
                    difference -= 1
                }

虽然这行得通,但感觉并不十分优雅,希望能找到更好的方法。

谢谢您的建议。

1 个答案:

答案 0 :(得分:0)

最好的方法是,如果索引大于或等于someArray的大小,则将文本字段text属性设置为“”:

cell.textField.text = indexPath.row < someArray.count ? someArray[indexPath.row] : ""

我认为他们在评论中建议的是什么。

您似乎只想清理代码,并拥有一种更干净的方法来使用默认值填充数组。我会像这样使用Array.init(repeating repeatedValue: Element, count: Int)

let difference = tableView.numberOfRows(inSection: 0) - someArray.count
if difference > 0 {
    someArray.append(contentsOf: Array(repeating:"", count: difference))
}

您可以真正地获得可爱,并创建一个数组扩展来为您做:

extension Array {
    mutating func append(repeating repeatedValue: Element, count: Int) {
        if count > 0 {
            append(contentsOf: Array(repeating: repeatedValue, count: count))
        }
    }
}

然后:

someArray.append(repeating: "", count: tableView.numberOfRows(inSection: 0) - someArray.count)