2017-11-24 10 views
0

私はHTagViewライブラリを使用してタグのリストを表示しています。私は、配列の最後の項目を削除しようとしました配列が限界に達した後に選択を無効にする

var selectedInterests = [Int]() 

func tagView(_ tagView: HTagView, tagSelectionDidChange selectedIndices: [Int]) { 

    selectedInterests.removeAll() 

    for i in selectedIndices { 
     selectedInterests.append(i) 

     if selectedInterests.count > 3 { 
      print("limit reached") 
      selectedInterests.removeLast() 
      tagView.reloadData() 
     } 
    } 
} 

これもdoesnの:私はタグを埋めてきたし、今私はここ3への選択を制限したいが、私はこれをしようとしていている場合仕事はありません。ほとんどの例は、テーブルまたはコレクションビューのindexPathに基づいてこの例を示しています。どのように私は2つのいずれかでそれを達成するのですか?

+0

私はあなたの3つの項目を表示するだけです、あなたが達成するために必要なものを理解していませんか?それはあなたが必要とするものですか? –

+0

いいえ、制限に達した後でアクションを実行しようとしています。私はもう選択を無効にしたい。しかし、3だけを見せても良いでしょう! – mninety5

+0

それから、サイクルを中断し、その後にtagViewをリロードしてから、サイクルの中でリロードするのではなく、それを試してみてください。 –

答えて

2

あなたがやらなければならないことは、すでに選択したタグの量は、私はまた、あなたが簡単の値を変更することができます変数として額になるだろう3よりも大きい場合は、すぐにタグの選択を解除することです:

var maxTagsSelected = 3 

func tagView(_ tagView: HTagView, tagSelectionDidChange selectedIndices: [Int]) { 
    if selectedIndices.count > maxTagsSelected { 
     tagView.deselectTagAtIndex(selectedIndices[maxTagsSelected]) 
    } 
} 

変数maxTagsSelectedは常にselectedIndicesの最後の要素のインデックスになります。

+0

コードを試しているときに、このエラー '基本型' [Int] 'とインデックスタイプ' CountableRange 'であいまいな添字が得られます。 – mninety5

+0

@ mninety5申し訳ありませんが、Array初期化子にラップするのを忘れていました。コードを更新しました。今すぐ試してください。 –

+0

このコードは選択範囲を3に制限していますか?あなたのコードはまだ私に多くを追加させます。あなた自身でこれを試しましたか? – mninety5

0

ことは、これを試してください。..

var selectedInterests = [Int]() 

func tagView(_ tagView: HTagView, tagSelectionDidChange selectedIndices: [Int]) { 

    selectedInterests.removeAll() 
    selectedInterests = selectedIndices[0..<3] 

} 
関連する問題