2016-01-08 3 views
-1

Я пытаюсь сделать приложение, которое берет информацию из двух текстовых полей и случайным образом выбирает одно из предложений и помещает его в метку на другом контроллере представления. Я участвую в классе Mobile Apps 1, поэтому я новичок в этом. Если вы могли бы объяснить это как можно больше, мы будем очень благодарны. С новым годом!Создание рандомизатора, выбирающего слова из текстового поля (Swift)

Мой код:

class twoIdeasViewController: UIViewController { 

    @IBOutlet weak var twoIdeaContinueButton: UIButton! 
    @IBOutlet weak var twoIdea2TextField: UITextField! 
    @IBOutlet weak var twoIdea1TextField: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.title = "Enter Ideas" 
    } 

    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     let twoIdea1:String = twoIdea1TextField.text! 
     let twoIdea2:String = twoIdea2TextField.text! 
     return true 
    } 

    func prepareForSegue(segue: UIStoryboardSegue, Object: AnyObject?){ 
     let twoIdeaFinal = segue.destinationViewController as! twoFinalViewController 
     twoIdeaFinal.twoIdea = //the variable that will contain the randomizer  
    } 
} 
+0

Объясните, что вы пробовали и то, что не работает , Кроме того, проверьте раздел «Связанный» справа, на вопросы, похожие на ваши. – fishinear

ответ

0

Вы можете использовать что-то вроде этого

func getRandomString() -> String 
{ 
    let randomNumber = arc4random_uniform(2) + 1 

    switch randomNumber 
    { 
     case 1: 
      return twoIdea1TextField.text! 
     case 2: 
      return twoIdea2TextField.text! 
     default: 
      return "" 
    } 
} 

у меня нет времени, но я думаю, что с перечислением проще, чем то, что я сделал.

+0

Как я могу отправить это через segue? Должен ли я отправить функцию getRandomString через так: twoIdeaFinal.twoIdea = getRandomString –

+0

Это должно быть «twoIdeaFinal.twoIdea = self.getRandomString()» –

+0

Код работает, но он не отображается в метке. Метка просто пустая, что-то не так со вторым кодом viewcontroller? : класс 2FinalViewController: UIViewController { @IBOutlet слабый var twoFinalLabel: UILabel! переопределение функ viewDidLoad() { super.viewDidLoad() twoFinalLabel.text = "\ (twoRandom)" } вар twoRandom = String() } –

1

Используйте arc4random_uniform() для создания случайного числа, которое контролирует, какое из двух текстовых полей вы хотите извлечь и отправить текст. Кроме того, вам, похоже, нужно исправить ваш метод prepateForSegue: вам нужно сопоставить идентификатор segue с идентификатором вашего второго контроллера представления (установленным в инспекторе атрибутов при выборе этого другого контроллера представления в вашем раскадровке).

@IBOutlet weak var twoIdea2TextField: UITextField! 
@IBOutlet weak var twoIdea1TextField: UITextField! 

// ... 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    /* Get the new view controller using segue.destinationViewController. 
     Pass the randomly chosen text view text to the UILabel of the 
     new view controller. */ 

    /* Here: you need to match with the identifier of your 
     VC 'twoFinalViewController' (set in attributes inspector) */ 
    if segue.identifier == "twoFinalVC" { 
     let viewController = segue.destinationViewController as! ViewController 

     let random = arc4random_uniform(2) 
     viewController.twoFinalLabel.text = (random == 0) ? (twoIdea1TextField.text ?? "") : (twoIdea2TextField.text ?? "") 
    } 
} 

Для более подробного описания, охватывающего SEGUE связь между двумя контроллерами зрения (UITableViewController и UIViewController), обратитесь к следующей нити

+0

текст не появляется на моем ярлыке, когда я запускаю его. Возможно, что-то с моим вторым диспетчером представлений: class twoFinalViewController: UIViewController { var twoIdea = String() @IBOutlet слабый var twoFinalLabel: UILabel! переопределение функ viewDidLoad() { super.viewDidLoad() twoFinalLabel.text = "\ (twoIdea)" } } –

+0

@DDoe Пожалуйста, добавьте этот дополнительный код в ваш вопрос, а не эти комментарии. – dfri

+0

@DDoe проверьте, исправлен ли обновленный ответ для вас. Обратите внимание, что вам нужно сопоставить «segue».идентификатор "с соответствующим идентификатором, введенным в инспекторе атрибутов для контроллера целевого представления. – dfri

Смежные вопросы