2016-10-06 9 views
0

Я делаю своеобразное колесо фортуны в iOS с Swift 3. Я использовал библиотеку с UIPickerView, я настроил представления, я сделал строки бесконечными (так что пользователь имеет идея, что он прокручивает бесконечные предметы).Swift 3 UIPickerView программно начинает вращаться

Единственная проблема в том, что пользователь может проскользнуть сквозь цены в колесе фортуны, поэтому в принципе он может выбрать любую цену, которую он хочет.

Как бы то ни было, чтобы предотвратить это, когда пользователь нажимает или поворачивает колесо, я делаю UIPickerView вращением и со случайным числом я решаю результат колеса фортуны.

Я знаю, как добавить распознаватели жестов к колесу, но единственное, что я не знаю, - это запустить программный интерфейс UIPickerView.

Заранее благодарен!

ответ

1

Я думаю, что вы ищете это:

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

Но если вы хотите, чтобы увидеть полный пример, который я сделал это для вас.

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])" 
} 


} 

Я надеюсь, что я помог вам

+0

Именно то, что я хотел! Теперь мне просто нужно найти способ отключить медленное прокручивание колеса или просто отключить прокрутку и только нажатием! Бу спасибо, это я именно то, что я искал! – Charlotte1993