2015-11-03 69 views
0

我有一个程序,将搜索数据库并填充集合视图。目前工作。每个项目都有一个“关注”按钮,当点击该按钮时,我需要它执行一个操作,但我需要该操作才能访问indexPath.item。程序崩溃的原因是因为按钮的功能隐藏在集合视图方法中,但这是我可以访问indexPath.item的唯一方法。如何修复崩溃并仍然可以访问indexPath.item如何访问我的按钮功能中的indexPath.item?

func followuser(sender: UIButton){ 
    let pointInTable: CGPoint = sender.convertPoint(sender.bounds.origin, toView: self.collectionview) 
    if var indexPath :NSIndexPath = self.collectionview.indexPathForItemAtPoint(pointInTable){ 
     print(pointInTable) 
    } 
    var relation: PFRelation = (PFUser.currentUser()?.relationForKey("Friendship"))! 
    //relation.addObject(users[indexPath.item]) 

    print(relation) 
} 


func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let cell = collectionview.dequeueReusableCellWithReuseIdentifier("searchcell", forIndexPath: indexPath) as! searchcustomcell 

     cell.follow.addTarget(self, action: "followuser:", forControlEvents: UIControlEvents.TouchUpInside) 
+0

当在Swift/Objective-C中命名方法时,命名约定是该方法以小写字母开头。例如,在你的'func FollowUser'应该是'func followUser'。 – Adrian

+1

谢谢我会更新我的代码。 – xxtmanxx

+0

请按照我在回答和评论中列出的内容提供更多信息,或删除问题。 –

回答

1

我不确定您的意思是indexPath.itemNSIndexPath没有属性item,因此代码不可能工作,除非您创建了NSIndexPath类别。

而且我不确定你在哪里获得indexPath变量的值。

你有几个挑战。第一个挑战是获取包含被点击的按钮的单元格的indexPath。

你要做的一种方法是使用UICollectionView方法indexPathForItemAtPoint。您将采用按钮的边界并使用UIView方法之一来转换坐标系之间的点,以将按钮的原点从其坐标系转换为集合视图的坐标系。然后,您将获取该转换后的坐标,并在调用indexPathForItemAtPoint时使用它以获取包含该按钮的indexPath。

下一个挑战:你想通过indexPath查找什么?

表视图和集合视图通常存储他们的模型中的数据或者是1个维阵列中的(对于物品的单个行)或2维阵列(用于细胞的网格。)

您需要采取索引路径,并获取行或行和部分,并使用它索引到您的模型中,以获取您需要获取的任何内容。

但是,我们不能帮助您,直到您告诉我们您的集合视图是如何组织的以及如何存储表示您的单元格数据的模型。

+0

你是什么意思,它是如何组织的,自定义单元格的样子是什么样的? – xxtmanxx

+0

我正试图在两个用户之间创建一个PFRelation。一个用户搜索另一个用户,他们出现。单元格中有一个按钮。点击该按钮后,程序将知道点击了哪个“单元格”按钮。 – xxtmanxx

+0

我决定执行'indexPathForItemAtPoint'方法,我得到了按钮的CGPoint,但我在下一步该做什么。我更新了我的代码。 – xxtmanxx