2015-05-23 2 views
1

Я новичок в программировании IOS. В моем приложении у меня есть контейнер, который подключен к контроллеру просмотра страницы с тремя страницами. Это работает хорошо. Когда я нажимаю кнопку в главном контроллере представления, я хочу изменить метки кнопок в представлении контейнера. Итак, я должен подключить переменную в основном представлении к переменной в контроллере просмотра страницы. Я пишу, как ниже, но падает, когда я нажал на кнопку (SIGABRT сигнал) ..Изменение ярлыка кнопки в виде контейнера нажатием кнопки на главном экране

@IBAction func pressShift(sender: AnyObject) { 
    if (self.shift != 3) { 
     self.shift++ 
    } 
    else { 
     self.shift = 1 
    } 
    performSegueWithIdentifier("container", sender: sender) 
} 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    var scene = segue.destinationViewController as! FeaturesViewController 
    scene.shiftNumber = self.shift 
} 

Я сделал простой пример проекта. Вид контейнера в главном окне. В представлении контейнера есть метка (не контроллер просмотра страницы) и кнопка в главном окне. Я написал тот же код, но опять же происходит такая же ошибка. Вот образ моей раскадровки ...

Storyboard Image

Пример проекта: http://www.filedropper.com/exampletosegue

+1

Несколько вещей, вы должны проверить segueIdentifier в prepareForSeque if (segue.identifier == "container") {...}, и я думаю, что вы должны написать «как?». вместо «как!» (Я не уверен, что это то, что вызывает крах. Я также новичок в быстром) – TheSD

+0

segueIdentifier верен. Когда я отлаживаю, метод prepareForSegue вызывается, когда я нажимаю кнопку. После реализации метода он выходит из строя. Также проверили «как?». Не работает .. – D3sT

+0

, может быть, проверить, если self.shift! = Nil – TheSD

ответ

0

Я решил проблему, удалив вид ребенка, который уже создан при первом запуске ..

@IBAction func insertButton(sender: AnyObject) { 

    if (shiftNo != 3) { 
     shiftNo++ 
    } 
    else { 
     shiftNo = 1 
    } 

    var childView = self.childViewControllers[0] as! UIViewController 
    childView.willMoveToParentViewController(nil) 
    childView.view.removeFromSuperview() 
    childView.removeFromParentViewController() 

    performSegueWithIdentifier("container", sender: self) 
} 
Смежные вопросы