2016-10-06 5 views
0

Ich mache eine Art Glücksrad in iOS mit Swift 3. Ich habe eine Bibliothek mit einem UIPickerView, ich habe die Ansichten angepasst, ich machte die Zeilen endlos (so der Benutzer hat die Idee, dass er durch endlose Gegenstände scrollt).Swift 3 UIPickerView programmgesteuert zu drehen

Das einzige Problem ist, dass der Benutzer langsam durch die Preise im Glücksrad wischen kann, so im Grunde kann er wählen, was Preis er will.

Obwohl ich dies verhindern wollte, wenn der Benutzer das Rad tippte oder wischte, machte ich den UIPickerView rotierend und mit einer Zufallszahl entschied ich das Ergebnis des Glücksrads.

Ich weiß, wie Gestenerkenner zum Rad hinzugefügt werden, aber das einzige, was ich nicht weiß, ist wie programmgesteuert UIPickerView zu starten.

Vielen Dank im Voraus!

Antwort

1

Ich glaube, Sie sind für diese Suche:

pick.selectRow(10, inComponent: 0, animated: true) 

Aber wenn Sie ein vollständiges Beispiel zu sehen, ich dies für Sie gemacht.

class ViewController: UIViewController, UIPickerViewDataSource{ 

@IBOutlet var pick: UIPickerView! 

var myArr = [Int]() 

var myT = Timer() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    for element in 0...100 { 

     myArr.append(element) 
     } 


    myT = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(ViewController.movePicker), userInfo: nil, repeats: true) 



} 



//MARK: - move picker 

func movePicker() { 


    let position = Int(arc4random_uniform(89) + 10) 


    pick.selectRow(position, inComponent: 0, animated: true) 
    pick.showsSelectionIndicator = true 

    if position == 50 || position == 72 || position == 90 || position == 35 { 

     myT.invalidate() 

     let alert = UIAlertController(title: "You Won!!", message: "Congratulations!!!", preferredStyle: .alert) 
     let buttonOK = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil) 
     let playAgain = UIAlertAction(title: "Play Again!", style: .default, handler: { (action) in 

      self.myT = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(ViewController.movePicker), userInfo: nil, repeats: true) 
     }) 

     alert.addAction(buttonOK) 
     alert.addAction(playAgain) 

     present(alert, animated: true, completion: nil) 



    } 

} 




//MARK: - picker 
func numberOfComponents(in pickerView: UIPickerView) -> Int { 

    return 1 

} 

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return myArr.count 
} 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return "\(myArr[row])" 
} 


} 

Ich hoffe, dass ich Ihnen

+0

Genau dazu beigetragen haben, was ich wollte! Jetzt muss ich nur noch einen Weg finden, das langsame Wischen des Rades zu deaktivieren oder einfach nur das Wischen deaktivieren und nur durch Antippen! Bu Danke, das war ich genau was ich gesucht habe! – Charlotte1993

Verwandte Themen