2016-05-24 2 views
2

Я пытаюсь передать UIColor на другой viewController через «show» segue, чтобы цвет фона мог соответствовать цвету выбранной цветовой кнопки. У меня есть этот бит кода, который печатает тег отправителя кнопок, но он не выполняет этот сеанс.Подготовьтесь к Segue в Swift с отправителем

Что я делаю неправильно? Я никогда не работал с тегами отправителя, чтобы это могло быть что-то глупо, но я не уверен.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     if segue.identifier == "toQuiz" { 
      if sender?.tag == 1 { 

       let viewController:ViewController = segue.destinationViewController as! ViewController 
       let color = UIColor.blueColor() 
       viewController.passedColor = color 

      } else if sender!.tag == 2 { 

       let viewController:ViewController = segue.destinationViewController as! ViewController 
       let color = UIColor.greenColor() 
       viewController.passedColor = color 

      } else if sender!.tag == 3 { 

       let viewController:ViewController = segue.destinationViewController as! ViewController 
       let color = UIColor.yellowColor() 
       viewController.passedColor = color 

      } 
     } 
    } 

    @IBAction func athButtonTapped(sender: AnyObject) { 

     let athleteQuiz = sender as! UIButton 
     print("Button \(athleteQuiz.tag) was pressed!") 
    } 

    @IBAction func actorButtonTapped(sender: AnyObject) { 

     let actorQuiz = sender as! UIButton 
     print("Button \(actorQuiz.tag) was pressed!") 
    } 

    @IBAction func musicButtonTapped(sender: AnyObject) { 

     let musicQuiz = sender as! UIButton 
     print("Button \(musicQuiz.tag) was pressed!") 
    } 

Это раскадровка расположение - все они подключены правильно и идентификатор Segue совпадает в раскадровке.

enter image description here

enter image description here

+0

Ваш segue правильно подключен в раскадровке? также проверьте идентификатор – Shubhank

+0

Привет, Шубханк, я просто добавил несколько фотографий, чтобы помочь кому-то, любезному, чтобы помочь мне! –

+0

Является ли вообще вызов метода prepareForSegue? Если нет, проверьте свою раскадровку и убедитесь, что для контроллера левого представления назначен соответствующий класс. Если вы сделали прямые переходы с кнопок в Interface Builder, переход все равно произойдет, но ваши методы класса не будут вызываться, потому что ваш класс не создается. –

ответ

4

Некоторые вещи, чтобы проверить:

  • левый контроллер зрения иметь свой класс присвоен ли ему в IB?
  • Действительно ли что-то вызывает запуск segue? Ни один из ваших действий с помощью кнопки не включает вызов performSegueWithIdentifier(_:sender:)

Кроме того, это очень опасный блок кода; вы не должны быть силовым отправителем, подобным этому. Вместо этого подумайте о том, чтобы сделать что-то вроде этого:

guard let id = segue.identifier else { return } // Bail if there isn't a segue ID. 
if id == "toQuiz" { 
    guard let tag = (sender as? UIView)?.tag else { return } // Bail if we can't get a tag. 

    // Continue examining the tag. 
} 
Смежные вопросы