2016-05-12 12 views
0

誰かが私のUIViewをシミュレータで隠さないと言うことができますか? コードが機能していて、関数に追加した数値が表示されますが、それでも機能しません。UICollectionViewCellでの表示を非表示にする

基本的にはセルをタップして、セル内のgreyViewが消えてしまいます。

override func viewDidLoad() { 
     super.viewDidLoad() 

     let lpgr = UITapGestureRecognizer(target: self, action: #selector(ViewController.handleTap(_:))) 
     lpgr.numberOfTapsRequired = 1 
     lpgr.delaysTouchesBegan = true 
     lpgr.delegate = self 
     AlarmCollection.addGestureRecognizer(lpgr) 

    } 


    // MARK: UICollectionViewCell 

    func handleTap(gestureReconizer: UITapGestureRecognizer) { 
     if gestureReconizer.state != UIGestureRecognizerState.Ended { 
      return 
     } 

     let p = gestureReconizer.locationInView(AlarmCollection) 
     let indexPath = AlarmCollection.indexPathForItemAtPoint(p) 

     if let index = indexPath { 
      var cell = AlarmCollection.cellForItemAtIndexPath(index) 
      // do stuff with your cell, for example print the indexPath 
      print(index.row) 
      updateView(indexPath!) 
     } else { 
      print("Could not find index path") 
     } 
    } 



    func updateView(indexPath: NSIndexPath) { 
     let cell = AlarmCollection.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! AlarmItemCell 
     cell.greyView.hidden = true 
     print("2") 

    } 

EDIT:

// MARK: UICollectionViewCell 



func handleTap(gestureReconizer: UITapGestureRecognizer) { 
    if gestureReconizer.state != UIGestureRecognizerState.Ended { 
     return 
    } 

    let p = gestureReconizer.locationInView(AlarmCollection) 
    let indexPath = AlarmCollection.indexPathForItemAtPoint(p) 

    if let index = indexPath { 
     var cell = AlarmItemCell() 
     // do stuff with your cell, for example print the indexPath 
     print(index.row) 
     updateView() 
    } else { 
     print("Could not find index path") 
    } 
} 




func updateView(cell: UICollectionViewCell) { 
    if let cell = cell as? AlarmItemCell { 
     cell.greyView.hidden = true 
    } 
    print("2") 
} 

EDIT 2:

if let index = indexPath { 
      let cell = AlarmCollection.cellForItemAtIndexPath(index) 
      updateView(cell!) 


     } 
+0

あなたが投稿する前にあなたのコードをクリーンアップする必要があります。 'didReceiveMemoryWarning()'のような不必要なコードや、 ''読み込み後に追加設定をする ''のような不要なコメントを残すと、読みにくくなり、助けてくれる人が奪われる可能性があります。あなたの投稿を編集できますか? – Andrej

+0

ありがとうございます。 –

答えて

0

あなたはgreyViewを参照するためにあなたのコレクションビューから取得しているセルを使用することができるはずです。例えば

にごupdateView機能を変更する:あなたがここにvar cell = AlarmCollection.cellForItemAtIndexPath(index)機能になったセルを渡すその後

func updateView(cell: UICollectionViewCell) { 
    if let cell = cell as? AlarmItemCell { 
     cell.greyView.hidden = true 
    } 
    print("2") 
} 

。 あなたが今やっているやり方は、私が理解できる限り正しい細胞をつかむことではありません。

EDIT:

if let index = indexPath, 
    let cell = AlarmCollection.cellForItemAtIndexPath(index) { 
    updateView(cell) 
} else { 
    print("Could not find index path or cell") 
} 
+0

また、クラッシュや予期しないバグを避けるために、強制的にキャスティングを行わず、アンラッピングを可能な限り強制してください。 – ebearden

+0

助けてくれてありがとう!しかし、私はまだ間違ってやっていることを教えていただけますか? @ebeardenメインの質問を更新しました –

+0

'updateView'関数が呼び出されますか?そうであれば、ビューを隠すブロックにしますか? – ebearden

関連する問題