2015-07-09 4 views
0

Заранее благодарим за помощь!Код ошибки при использовании сегментированного элемента управления для просмотра контейнера

Я пытаюсь использовать сегментированный элемент управления для изменения представлений детей в представлении контейнера на одном из моих контроллеров представления. Я нашел хороший ответ на SO об этом и ниже был следующий код:

@IBAction func segmentedControlChange(sender: AnyObject) { 

    var newController = storyboard?.instantiateViewControllerWithIdentifier(viewControllerIdentfiers[sender.selectedIndex]) as! UIViewController 
    let oldController = childViewControllers.last as! UIViewController 

    oldController.willMoveToParentViewController(nil) 
    addChildViewController(newController) 
    newController.view.frame = oldController.view.frame 

    transitionFromViewController(oldController, toViewController: newController, duration: 0.25, options: UIViewAnimationOptions.TransitionFlipFromRight, animations: { 
     () -> Void in 
     //nothing needed here 
     }, completion: { (finished) -> Void in 
      oldController.removeFromParentViewController() 
      newController.didMoveToParentViewController(self) 

    }) 
} 

Когда я запускаю его в тренажере, а затем нажмите на сегментированной управления, подхожу с нитками 1: EXC_BAD_INSTRUCTION (код = EXC_l386_INVOP , subcode = 0x0). Я также использовал идентификаторы панели объявлений на контроллерах.

+0

Я хотел бы предложить вам разместить все сообщения от консоли ошибок. Консоль скажет вам, «где ваша проблема живет». Ищите ссылки на свой класс, и он перечислит метод, вызывающий крах. Там также есть вещи, как 'UIKit'. – Adrian

ответ

0

Try, чтобы получить раскадровки

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
+0

Я действительно сделал это сразу после того, как я разместил это! Это все еще не сработало. Я дважды проверял идентификаторы раскадровки, и они тоже правильные. –

+0

Когда вы загружаете свой первый контроллер просмотра в Storyboard, вы используете встроенный segue с видом контейнера? Если вы начинаете с контроллера вида, который не имеет ничего в представлении контейнера, то у него не будет никаких дочерних контроллеров. Это означает, что 'childViewControllers.last' равен нулю, но вы принудительно разворачиваете/отбрасываете его с помощью' as! ', Что приведет к этой ошибке. – Max