所以,截至目前,我对 Swift 的理解是,为了从一个 View 转换到另一个 View ,实现它的方法是使用 segues。但是,在我的应用程序中,我有一个 TableView ,其中显示了用户可以与之交互的项目列表,这样做会将这些项目移动到我的应用程序中包含在选项卡栏中的另一个 View Controller 。
class JobCompletedTableViewController: UITableViewController {
// MARK: Properties
var jobsCompleted = [Job]()
var jobsChosen = [Job]()
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let share = UITableViewRowAction(style: .normal, title: "Share") { action, index in
// Add data to the array created locally
self.jobsChosen.append(self.jobsCompleted[indexPath.row])
}
share.backgroundColor = UIColor.blue
return [share]
}
// Need some sort of method to pass data into other view
//controller if tab button is clicked
}
嵌入在导航 Controller 和标签栏 View Controller 中的 TableView 。
class ChosenTableViewController: UITableViewController {
// MARK: Properties
var jobsChosen = [Job]()
// Upon initalization of this view, this array should be populated with data passed from the above view controller
}
对于这个问题,我最初的想法是简单地在 View Controller 中创建一个数组来跟踪用户与列表项的交互。然后将用户与之交互的项目添加到数组中。当用户单击选项卡栏中的项目时,实例化另一个 TableView Controller ,它显示用户与之交互的所有项目。
如果您愿意了解如何实际实例化 ChosenTableViewController 类的实例,我将不胜感激,该类将包含用户与之交互的所有项目列表。
最佳答案
由于它们不需要持久化,最简单的解决方案是使用一个单例,它将选定的作业保存在一个数组中,您可以在电子邮件 VC 出现时从中检索该数组。
final class SelectedJobs {
static let shared = SelectedJobs()
var jobsArray = [Job]()
}
然后在邮件VC中:
class EmailVC: UIViewController {
var selectedJobs = [Job]()
override func viewWillApear(_ animated: Bool) {
super.viewWillAppear(animated)
for job in SelectedJobs.shared.jobsArray {
selectedJobs.append(job)
}
self.tableView.reloadData()
}
}
关于ios - 将数据从 TableView Controller 传递到选项卡 View 中包含的另一个 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40325949/