我的集合视图单元格中有一个按钮,用于将索引路径中的项目保存到解析用户类中的数组属性。集合视图由事件填充,用户单击弹出警报视图的按钮,当他们单击是时,事件将保存到用户将参加的事件数组中。
在cellForRowAtIndexPath方法中,我将一个目标添加到按钮并调用pop alert视图方法,这个方法一切都很好......
cell.attendButton.addTarget(self, action: "popAlertView", forControlEvents: UIControlEvents.TouchUpInside)
现在,方法内部遇到了一些问题......
方法的第二行(让事件......)出现错误,表示"任何对象都没有名为row"的成员。访问索引路径并为相应路径实例化事件的最佳方法是什么?
func popAlertView() {
var indexPath = self.collectionView.indexPathsForSelectedItems()
let event = events[indexPath?.row]
var alertViewController = UIAlertController(title: "Attend event?", message: nil, preferredStyle: UIAlertControllerStyle.Alert)
alertViewController.addAction(UIAlertAction(title: "Yes!", style: UIAlertActionStyle.Default, handler: { (action) -> Void in
// save event to array of events of user
}))
alertViewController.addAction(UIAlertAction(title: "No thanks", style: UIAlertActionStyle.Cancel, handler: { (action) -> Void in
}))
self.presentViewController(alertViewController, animated: true) { () -> Void in
// finish up here
}
}
此外,在事件数组的保存事件(用户类)中,我究竟能如何处理,同时以数组形式保存和检索PFUser.currentUser的对象?我查看了Parse的开发人员指南,但找不到具体的帮助,只保存单个对象。
我非常擅长快速解析,感谢您的耐心和帮助!
答案 0 :(得分:0)
indexPathsForSelectedItems()
返回[NSIndexPath]?
,表示Optional Array
个NSIndexPath
个NSIndexPath
个对象。
为了获得实际的Optional
个对象,您需要首先打开Array
,然后遍历guard
。在这种情况下,让我们使用NSIndexPath
,因为我们无法继续,除非至少有一个guard let selectedItemPaths = self.collectionView.indexPathsForSelectedItems() else { return }
var selectedEvents = [Event]()
for indexPath in selectedItemPaths {
selectedEvents.append(events[indexPath.row])
}
。
Array
此时,根据Event
的所有内容,您的selectedItems
个Event
个对象都会setTimeout
。假设您每次添加一个路径时都清除所选路径,那么每次调用此代码时,您只需添加一个pressCool
。
答案 1 :(得分:0)
不要添加目标,像这样使用@IBAction
@IBAction func popAlertView(sender: AnyObject) {
let buttonPosition = sender.convertPoint(CGPointZero, toView: self.tableView)
let indexPath = self.tableView.indexPathForRowAtPoint(buttonPosition)
if indexPath != nil {
let cell:SweetTableViewCell!(change this) = tableView!.cellForRowAtIndexPath(indexPath!) as! SweetTableViewCell!(change this too)