Есть ли более чистый способ заполнить таблицу? - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть tableView с пользовательской ячейкой с двумя метками и двумя UITextFields, иногда мой 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 голосов
/ 03 февраля 2019

Лучшим способом было бы просто установить свойство текста текстового поля равным "", если индекс больше или равен размеру someArray:

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))
}

Вы можете получить cute и создать расширение Array, чтобы сделать это для вас:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...