全部。我不知道这个。 我正在开发一个应用程序,该应用程序需要将此视图作为TableView(代表练习,以练习名称作为标题),并且在每个单元格内我都需要查看并能够触摸这些圆形的按钮(将集合表示为按钮数量)和代表按钮内的数字)。 我已经能够将图像和图像放到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]
}
}
答案 0 :(得分:0)
理论上,根据您的图像,如果每行中的圆圈不需要处于滚动视图中(没有空间可以显示所有圆圈),那么使用UIStackView
是一个不错的选择,因为堆栈视图可以处理圆的间距和分布。
另一方面,如果视图容器必须可滚动,则使用集合视图可能会满足您的需求。
答案 1 :(得分:0)
您需要使用UIButton,该按钮可让您设置每种状态(正常,选择,突出显示,禁用)的图像和标题。您可以很容易地使用圆形按钮。
此处提供了有关操作方法的教程: UIButton tutorial
和苹果参考: UIButton Apple doc
请注意,您不需要图像来绘制圆形按钮,对于简单的按钮,您可以在按钮上添加边框,并将其图层的cornerRadius属性设置为圆形。
对于布局,您可以通过正确设置标题(补充视图)和单元格的大小来使用UICollectionView来实现。
答案 2 :(得分:0)
解决了!使用了CollectionView并添加了一些按钮。 我使用TableView和TableViewCell创建了一个新的ViewController,然后使用CollectionViewCell创建了一个CollectionView。在其中添加了我想要的内容。我为文本创建了数组,并为要使用的图像创建了数组。关于设置每个单元格和每个tableview(tableView和collectionView)的常用知识。为了知道用户点击哪个项目,我使用了didSelectItemAt函数,对于动作我使用了segue(因为我想将用户发送到另一个视图)。