Изменить переменную на основе indexPath.row - PullRequest
0 голосов
/ 23 мая 2019

У меня есть четыре разные переменные, называемые display0, display1, display2, display3. Затем у меня есть collectionView с многократно используемой ячейкой, в которой есть textLabel. Там будет четыре ячейки, текстовые метки которых я хочу установить на display1 through to display4. Могу ли я сделать что-то вроде cell.textLabel.text = display\(indexPath.row)?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

создать список переменных:

let displays = ["data0","data1","data2","data3"]

Вы можете просто назначить переменную или изменить ее:

displays[1] = "newData1"

тогда в вашем cellForRow просто вызовите это:

cell.textLabel.text = displays[indexPath.row]
0 голосов
/ 23 мая 2019

Нет, вы не можете вывести имя переменной из конкатенации во время выполнения, что означает, что если у вас есть переменная, объявленная как

var display0 = "5"

, то если вы сделали

let str = "display\(indexPath.row)"

, str будет иметьстрока display0, но фактическое содержимое внутри переменной display0 не будет, так как оба значения не имеют значения

Либо:

1- Добавьте их в массив модели

var arr = ["contentvar1","contentvar2","contentvar3","contentvar4"]

cell.textLabel.text = arr[indexPath.row]

2- Использовать корпус переключателя

switch indexPath.row  {
 case 0 :
      cell.textLabel.text = display0
  ---
}

Вариант 1 более эффективен, чем 2

...