我有一个由Coredata的Entity(tempPrice)填充的表和一个由另一个Entity(Participants)填充的CollectionView。如果集合的参与者=对tempPrice的参与者,则将选择collectionView的项目。
当我在collectionView中选择一个项目时,我需要添加到此表对象。 这是我的代码:
func selectedPartecipants() {
for row in 0..<tableView.numberOfRowsInSection(0) {
let indexPath = NSIndexPath(forRow: row, inSection: 0)
let price = tempPrice[indexPath.row].partecipants?.date!
for item in 0..<collection.numberOfItemsInSection(0) {
let myPath = NSIndexPath(forRow: item, inSection: 0)
let partecipant = partecipantsAtEvent[myPath.row].date!
if price == partecipant {
collection.selectItemAtIndexPath(myPath,
animated: false,
scrollPosition: UICollectionViewScrollPosition.None)
}
}
}
我如何实现这一目标?
答案 0 :(得分:2)
我认为你需要采取另一种方法。
1)创建一个数组。
2)将所选项添加到数组中。
3)完成后,从数组中填充tableview。
更容易。你知道怎么做吗?
如果没有,这里有一些应该有用的代码:
var selectedArray = [Price]()
//这里放置检查所选项的CODE并将项添加到数组中。
func selectedPartecipants() {
let price = tempPrice[indexPath.row].partecipants?.date!
for item in 0..<collection.numberOfItemsInSection(0) {
let myPath = NSIndexPath(forRow: item, inSection: 0)
let partecipant = partecipantsAtEvent[myPath.row].date!
if price == partecipant {
selectedArray.append(partecipant)
}
}
}
//
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCellWithIdentifier("SelectedCell") as? MovieCell{
let selected = selectedArray[indexPath.row]
cell.configureCell(selected)
return cell
} else {
return UITableViewCell()
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return selectedArray.count
}
最后,得出结论:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
selectedPartecipants()
tableView.reloadData()
}