【发布时间】:2021-05-10 10:59:22
【问题描述】:
我在将领域对象的数据从 tableViewController 传递到 viewController 时遇到了困难。我想从表中选择一个对象,并在下面的 viewController 中使用该对象的数据。我一直在努力在这里找到处理领域对象的资源,而不仅仅是传递字符串等。任何帮助都会很棒。
这是我的 TableViewController,我尝试为第二个视图创建一个 segue 函数:
class WorkoutController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return DBHelper.shared.getWorkout().count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
if cell == nil {
cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
}
let muscle = DBHelper.shared.getWorkout()[indexPath.row]
cell.textLabel?.text = muscle
return cell
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let workoutDetailVC = segue.destination as! WorkoutDetail
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let name = DBHelper.shared.getWorkout()[indexPath.row]
workoutDetailVC.receivedName = name
}
}
}
这是应该接收和显示数据的 WorkoutDetail 类:
class WorkoutDetail: UIViewController {
@IBOutlet weak var muscleLabel: UILabel!
var receivedName = ""
override func viewDidLoad() {
super.viewDidLoad()
muscleLabel.text = receivedName
}
}
这是上面引用的 getWorkout() 函数:
func getWorkout()-> [String] {
var musclesName = [String]()
let storedExercise = realm.objects(Workout1.self)
for exercise in storedExercise {
musclesName.append(exercise.exercise)
}
return musclesName
}
我在这方面遇到了很大的困难,非常感谢一些帮助,谢谢。
【问题讨论】:
-
您没有将领域对象传递给您的第二个视图控制器。您正在传递一个字符串,因此它会像传递任何其他字符串一样被处理。还有,为什么
prepare(forSegue里面有一个tableview委托函数didSelectRow:at?