У меня сложная ситуация, и мне нужна ваша помощь, чтобы выяснить, что мне делать.
У меня есть один прототип UIcollectionView
, этот прототип должен быть создан 4 раза для каждого типа стиля.
Я определил эти типы стилей как перечисление:
enum Colors {
case black, blue, red, green
}
var color = Colors.black
Внутри CollectionViewCell
У меня также есть tableView
, у которого есть один прототип, содержащий этикетку. И есть четыре массива, которые TableViews
должны быть заполнены этими массивами:
var black = ["black1","black2","black3"]
var blue = ["blue1","blue2","blue3"]
var red = ["red1","red2","red3"]
var green = ["green1","green2","green3"]
Теперь я попытался установить соединение между этими TableViews и collectionViews
сначала для UICollectionView
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
switch indexPath.row {
case 0,1,2,3:
if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "colors", for: indexPath) as? colorsCell {
switch indexPath.row {
case 1:
self.color = .black
case 2:
self.color = .blue
case 3:
self.color = .red
case 4:
self.color = .green
default:
break
}
return cell
}
default:
break
}
return UICollectionViewCell()
}
Тогда для TableView
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.row {
case 0,1,2,3:
if let cell = tableView.dequeueReusableCell(withIdentifier: "colCell", for: indexPath) as? colCellDashboard {
switch self.color {
case .black:
cell.title.text = black[indexPath.row]
case .blue:
cell.title.text = blue[indexPath.row]
case .red:
cell.title.text = red[indexPath.row]
case .green:
cell.title.text = green[indexPath.row]
}
return cell
}
return UITableViewCell()
}
Результат недостаточно хороший, первые три табличных вида в первых трех коллекционных полях были заполнены синим массивом, а последний правильный, который заполнен зеленым массивом.
Буду признателен, если вы поможете мне в этом.