2016-06-28 4 views
1

enter image description hereスウィフトUICollectionView cellForItemAtIndexPath間違って設定されたセルの内容

enter image description here

私はそのタイトルは「STR」変数と等しい場合にだけ隠されたボタンを作りたいです。

写真を追加することはできませんが、「7:00」、「12:00」、「17:00」、「22:00」の値は同じです。 「2:00」にして比較したいだけです。

これは(collectionView)cellForItemAtIndexPathのバグなのですか?私は困惑している。助けてください。

+0

あなたが試したことを見せてください –

+0

私のコードブロックと出力を示す写真が2枚あります。 "01:00"、 "02:00"、 ".."のような24時間を表示するために、ボタンを内部に持っているだけの水平コレクションビューを作りたい。しかし、いくつかのボタンを他のボタンと違うものにしたい。 hideボタンか別のtitleColorになります。この例では、「02:00」タイトル –

+0

を持つボタンを隠そうとしています。しかし、「7:00」、「12:00」、「17:00」タイトルを持つ他のボタンも変更されています。水平コレクションビューを左または右に移動すると、別のボタンが設定されます。これは奇妙なことではない? –

答えて

1

スクロールするとセルが再利用されるため、条件に基づいて非表示のtrueをfalseに設定します。私はこれがあなたの問題だと思う。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
let hour = array[indexPath.row] 
let str ="2:00" 
if(cell.hourBtn.titleLabel?.text ==str { 
    cell.hourBtn.hidden = true 
} 
    else { 
    cell.hourBtn.hidden = false 
    } 
} 
+0

その働き。ありがとう、相棒。 –

+0

@Erkamは私の答えを受け入れてください:) –

1

cellForItemAtIndexPathにはバグがありません。それは細胞のlabelを隠しています。だから、ラベルを隠すだけでセルを取り除くことはできません。 2:00と等しくない値だけを表示したい場合は、そのために追加の配列を1つ作成し、CollectionViewDelegateメソッドに渡す必要があります。 1つのグローバル配列を作成し、このように機能します。

var array: [Int] = [Int]() 
fun populateData() { 
    for i in oldArray { 
     if i != 2 { 
      self.array.append(i) 
     } 
    } 
    collectionView.reloadData() 
} 

今、この

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return self.array.count 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let hour = array[indexPath.row] 
    cell.hourBtn.setTitle("\(hour):00", forState: .Normal) 
    //Now there is no need to write code for hiding button 
} 

ようCollectionViewDelegate方法でこのarrayオブジェクトを使用するが、これはあなたを助けることを願っています。

+0

そのボタンを表示したいが、他のボタンと違う色を設定したい場合はどうすればいいですか?色を違うように設定して、水平コレクションビューright2leftまたはleft2rightを移動しようとすると、常にボタンの色が更新され、別のボタンがシフトされていて、それが必要ではありません。 –

+0

あなたが何を言おうとしているのか分かりません。簡単に説明してください。どのボタンの色を変更したいですか? –

+0

ありがとうございます@Nirav、それは解決されています:) –

関連する問題