2015-06-10 3 views
2

Сегу в моем приложении вызывается несколько раз, что вызывает постоянную загрузку представления, пока приложение не перестанет называть функцию segue. Он делает это примерно 4 раза, пока не закончит. После размещения точки останова в коде, я заметил, что приложение подпрыгивая между этими двумя функциями:Swift segue выполняется несколько раз

if success { 
    self.performSegueWithIdentifier("startGame", sender: "user") 
} 

То есть действие, которое вызывает SEGUE (пользователь пойло что-то). Затем он переходит к следующей точке останова:

if (segue.identifier == "startGame") { 
    let destinationNavigationController = segue.destinationViewController as! GameViewController 
    destinationNavigationController.user = self.users[self.currentUser] 
} 

Приложение перемещается между двумя разделами около 4 раз. Когда я создал segue в своем раскадровке, я убедился в том, что вы проецировали segue из самого контроллера представления (а не из представления таблицы/пользовательского интерфейса) в представление назначения.

Что еще можно сделать, чтобы исправить это?

Спасибо! enter image description here

ответ

0
  1. В раскадровке создайте сегмент, удерживая управление и перетаскивая из желтой иконки 1-го контроллера вида на второй контроллер вида.
  2. Дайте ему идентификатор, и тип должен быть push, если они встроены в контроллер навигации.
  3. В вашей 1-го класса контроллера представления:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "startGame" { 
        let viewController = segue.destinationViewController as! GameViewController 
        // this next view controller should have property that will store passed value 
        viewController.user = self.users[self.currentUser] 
    } 
    

    }

  4. Если вы хотите, чтобы перейти к следующему контроллеру вид:

    performSegueWithIdentifier("startGame", sender: self) 
    
+0

Как это отличается, чем код, предоставленный @james? – krummens

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