0

私のコレクション ビューでは、ビューが表示されたらすぐに最初のセルを選択する必要があります。

私は実装してdidSelectItemAtIndexPathおりdidDeselectItemAtIndexPath、セルが選択されている場合、セルが選択されていない場合は緑色の境界線が表示され、セルには白い境界線があります。

必要なのは、緑色の境界線を持つ最初のセルでアプリを開始することです。

使用しようとしました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
    }
4

2 に答える 2

1

解決策を見つけました。でviewDidLoad()

utilityClass.delay(0.1) {
            let indexPathForFirstRow = NSIndexPath(forItem: 0, inSection: 0)
            self.frameCollectionView.selectItemAtIndexPath(indexPathForFirstRow, animated: false, scrollPosition: .None)
            self.collectionView(self.frameCollectionView, didSelectItemAtIndexPath: indexPathForFirstRow)
        }
于 2016-04-01T23:50:12.480 に答える
1

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

より良い方法は、セル クラス内の UI を変更することです。たとえば、Trying to override "selected" in UICollectionViewCell Swift for custom selection state を参照してください。

于 2016-04-01T22:22:01.613 に答える