2016-04-01 8 views
0

マイコレクションビューでは、ビューが表示されるとすぐに最初のセルを選択する必要があります。セルは、セルが白のボーダーを持って選択されていないとき、それは緑の境界線を示し、選択された場合UICollectionView - 最初のセルをViewウィンドウが表示されるように選択します。

私はdidSelectItemAtIndexPathdidDeselectItemAtIndexPathを実施しています。

私が必要とするのは、最初のセルを緑色の境界線で開始することです。

しかし、selectItemAtIndexPathを使用しようとしましたが、最初のセルには緑色の境界線が表示されません。私は何が欠けていますか?

override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 

     let firstIndexPath = NSIndexPath(forItem: 0, inSection: 0) 

     frameCollectionView.selectItemAtIndexPath(firstIndexPath, animated: false, scrollPosition: .None) 

    } 

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 

     let frameCell = collectionView.cellForItemAtIndexPath(indexPath) as! FrameViewCell 

     frameCell.layer.borderWidth = 2 
     frameCell.layer.borderColor = UIColor.greenColor().CGColor 
    } 

    func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) { 

     let frameCell = collectionView.cellForItemAtIndexPath(indexPath) as! FrameViewCell 

     frameCell.layer.borderWidth = 1 
     frameCell.layer.borderColor = UIColor.whiteColor().CGColor 
    } 
+0

この時点では、セルはまだロードされていないので、選択できません。 – Sulthan

+0

私はまた、選択が呼び出される前に5秒の遅延を追加しようとしました。しかし、細胞はまだ選択されていません – SNos

答えて

1

を参照することです。 viewDidLoad()

1

プログラマチックに選択/選択解除するときは、デリゲートメソッドは呼び出されません。ユーザーが選択/選択解除した場合にのみ呼び出されます。

良い方法は、セルクラス内のUIを変更する解決策を見つけた例Trying to override "selected" in UICollectionViewCell Swift for custom selection state

+0

ありがとう!私はすでにその答えを見てきましたが、ビューがロードされたときではなくスクロールされたときだけセルを選択します。 – SNos

+0

@SNosセルがロードされると、選択されません。 – Sulthan

+0

しかし、最初のセルだけを緑の枠線で表示するロードを取得する方法がありますか? – SNos

関連する問題