2016-03-19 8 views
0

私は主に私のプロジェクトで実行されているtableViewの大部分を占めています。私はでtableView配列をシャッフルしようとしています。。このリンクからも同様のコードが見つかりましたHow do I shuffle an array in Swift?コードが正常に動作しますが、スワイプ(上/下)するたびにテーブルビュー配列がシャッフルされます。私はちょうど一回起こるようにコードを制限したい...Swiftで一度にシャッフルテーブルビュー配列をシャッフル

私は以下のコードを使用しています。

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 


    var indexArray = Array(MY ARRAY NAME.indices) 
    var index = indexArray.endIndex 

    let indexGenerator: AnyGenerator<Int> = anyGenerator { 
     if index == indexArray.startIndex { return nil } 
     index = index.advancedBy(-1, limit: indexArray.startIndex) 
     let randomIndex = Int(arc4random_uniform(UInt32(index))) 
     if randomIndex != index { 
      swap(&indexArray[randomIndex], &indexArray[index]) 
     } 
     return indexArray[index] 
    } 

    let permutationGenerator = PermutationGenerator(elements: MY ARRAY NAME, indices: AnySequence(indexGenerator)) 
    let newArray = Array(permutationGenerator) 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell 


    //////////////////////////////////// 
    cell.textLabel?.text = newArray[indexPath.row] //use of unsolved identifier "newArray" 
    //////////////////////////////////// 

    return cell 

} 

ありがとうございました。

+0

このコードブロックはいつ呼びますか?このブロックをviewDidLoadで呼び出してみてください。 –

+0

@ ZacharyEspíritu私はViewDidLoadにコードを移動しましたが、コードはnewArrayを呼び出さないようにしました。私は未解決の識別子エラーを取得しています...私はコードを更新しました。見てください。ありがとう – Joe

答えて

0

これをviewDidLoadの内部で呼び出すだけで、テーブルビューのセルを1回シャッフルする必要があります。すべてのセルで呼び出す必要はありません。

関連する問題