UITableView и UICollectionView?Нужна помощь - PullRequest
0 голосов
/ 10 февраля 2019

все.Я не могу понять это.Я работаю над приложением, которое должно иметь это представление в виде табличного представления (представляющего упражнения, с именем упражнения в качестве заголовка), и внутри каждой ячейки мне нужно видеть и иметь возможность касаться этих округленных кнопок (представляющих наборы в виде количества кнопок).и повторения как числа внутри кнопок).Я был в состоянии поместить изображения и это в CollectionView, но не имею понятия о кнопках.Вот набросок, который я сделал.

https://i.imgur.com/ZjHDM4d.png

Мой tableViewController

import Foundation
import UIKit


class WorkoutViewController: UITableViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = #colorLiteral(red: 0.2156862745, green: 0.368627451, blue: 0.5921568627, alpha: 1)
}

var workouts: [Workout1] = Workout1.fetchWorkout1()



override func numberOfSections(in tableView: UITableView) -> Int {
    return workouts.count
}

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

    return "ExcerciseName"

}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return workouts.count

}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "workoutCell", for: indexPath)
    let workout = workouts[indexPath.row]
    cell.textLabel?.text = workout.excerciseName
    cell.textLabel?.textColor = UIColor.white

    return cell
}



override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let workout = workouts[indexPath.row]
    tableView.deselectRow(at: indexPath, animated: true)
    print("Do \(workout.sets) sets of \(workout.reps) reps of \(workout.excerciseName)")
}

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    cell.backgroundColor = UIColor.clear
}


}

Источник данных

struct Workout1 {

let excerciseName: String
let sets: Int
let reps: Int

static func fetchWorkout1() -> [Workout1] {

    let w1 = Workout1(excerciseName: "Bench Press", sets: 3, reps: 8)
    let w2 = Workout1(excerciseName: "Push Press", sets: 3, reps: 8)
    let w3 = Workout1(excerciseName: "Squat", sets: 3, reps: 8)
    let w4 = Workout1(excerciseName: "Deadlift", sets: 3, reps: 8)
    let w5 = Workout1(excerciseName: "Bicep Curl", sets: 3, reps: 8)
    let w6 = Workout1(excerciseName: "Tricep Pushdown", sets: 3, reps: 8)



    return [w1,w2,w3,w4,w5,w6]
}


}

Ответы [ 3 ]

0 голосов
/ 10 февраля 2019

Вам необходимо использовать кнопку UIB, которая позволяет вам устанавливать изображения и заголовки для каждого состояния (обычное, выделенное, выделенное, отключенное).Вы можете очень легко делать кнопки с кругами.

Здесь у вас есть учебник о том, как это сделать: Учебник UIButton

и справочник по яблоку: UIButton Apple doc

Обратите внимание, что вам не нужно изображение для рисования круговой кнопки, для простого вы можете добавить границу к своей кнопке и установить для свойства своего слоя cornerRadius круг.

Для вашего макета вы можете сделать это с помощью UICollectionView, правильно установив размер заголовка (дополнительный вид) и ячеек.

0 голосов
/ 13 февраля 2019

Решено!использовал CollectionView и добавил несколько кнопок.Я создал новый ViewController с TableView и TableViewCell, а затем CollectionView с CollectionViewCell.Внутри я добавил то, что хотел.Я создал массив для текста и массив для изображений, которые я собирался использовать.Обычные вещи, касающиеся настройки каждой ячейки и каждого табличного представления (tableView и collectionView).Для того, чтобы узнать, какой элемент пользователь коснулся, я использовал функцию didSelectItemAt, а для действия - переход (потому что я хотел отправить пользователя в другое представление).

0 голосов
/ 10 февраля 2019

Теоретически, основываясь на вашем изображении, если кружки в каждой строке не обязательно должны быть в виде прокрутки (нет места для отображения всех кружков), тогда использование UIStackView будетхороший выбор, потому что представления стека обрабатывают пространство и распределение для окружностей.

С другой стороны, если контейнер представления должен быть прокручиваемым, использование представления коллекции может удовлетворить ваши потребности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...