2015-11-03 43 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