【发布时间】:2017-01-24 15:28:45
【问题描述】:
我会尽量做到具体。
我想要实现的是拥有一个其中包含集合视图的视图控制器,当用户单击集合视图单元格时,它将用户发送到另一个具有另一个集合视图的视图控制器,但是第二个集合视图中显示的项目将根据用户先前点击的集合视图单元格而改变。我也在使用 CoreData 来做到这一点。使用 CoreData,任务是一个实体,并且具有名称等属性。我是否必须更改它或在 2 个集合视图之间建立关系?
我想要这样做的原因是因为我正在为 iOS 创建一个生产力应用程序,第一个带有集合视图的视图控制器将是用户可以在这些项目中创建项目的地方,这些项目将显示在集合视图中,然后用户可以点击其中一个单元格并转到下一个视图控制器并开始创建特定于该项目的任务。
如何将任务保存在特定的集合视图单元格中,并让用户在其他项目中创建不同的任务。它有点像奇妙清单。如果有人对我想做的事情感到困惑,我可以详细说明。
这是我的视图控制器之一,来自“创建项目视图控制器”的数据通过 CoreData 发送到并显示在集合视图中,希望对您有所帮助:
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var myCollView: UICollectionView!
@IBAction func addCore(_ sender: UIButton) {
}
var tasks : [Task] = []
override func viewDidLoad() {
super.viewDidLoad()
self.myCollView.delegate = self
self.myCollView.dataSource = self
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
getData()
myCollView.reloadData()
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return tasks.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "connectCell", for: indexPath) as! MyCollectionViewCell
let task = tasks[indexPath.row]
cell.labelTe?.text = task.name!
self.myCollView.backgroundColor = UIColor.clear
cell.layer.cornerRadius = 25
return cell
}
func getData() {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do {
tasks = try context.fetch(Task.fetchRequest())
}
catch {
print("Ahhhhhhhh")
}
}
【问题讨论】:
-
应该可能会发布与此相关的代码。另外,我认为您想将数据从单元格传递到详细视图控制器是否正确?
-
@CalebKleveter 发布了我的主视图控制器代码,并且我想从一个单元格传递数据以关联到另一个视图控制器中的另一个集合视图单元格,以便如果按下该特定单元格然后它显示某些项目,如果用户按下另一个单元格,则会显示不同的集合视图单元格。非常感谢
标签: xcode core-data swift3 uicollectionview