2016-10-13 3 views
0

Я хочу передать значение в раскадровке init в раскадровке. Этот код, используемый в xib, хорошо работает. Но в раскадровке мое приложение рушится. Это мои фрагменты кода. Пожалуйста, помогите. Любая помощь будет оценена по достоинству.Передача значения в StoryBoard

В FirstviewController

let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) 
     viewControllerd = storyboard.instantiateViewControllerWithIdentifier("a") as? SecondViewController 
     viewControllerd = SecondViewController.init(title: "helo") 
     addViewControllerAsChildViewController(viewControllerd!) 

SecondView Контроллер

 init(title : String) 
     { 
      a = title 
      super.init(nibName: "SecondViewController", bundle: nil) 
     } 

     required init(coder aDecoder: NSCoder) 
     { 
     super.init(coder: aDecoder)! 
     } 
+0

Просьба показать журнал аварий. – dasdom

ответ

0
viewControllerd = SecondViewController.init(title: "helo") 

заменить код

viewControllerd.title = "helo" 

и не нужен следующий код:

init(title : String){ 

    a = title 
    super.init(nibName: "SecondViewController", bundle: nil) 

} 
+0

Я знаю этот код, но я хочу передать данные с помощью init – Rishab

+0

. Создайте переменную даты в классе SecondViewController и пройдите следующим образом: viewControllerd.date = Date() –

+0

или замените init (название: String, date: Date) { a = title super.init (nibName: «SecondViewController», bundle: nil) } –

0

У вас беспорядок в вашем коде.
Возможно, сбой приложения из-за двойной настройки на viewControllerd.
Определяется как константа (let), но вы устанавливаете значение для него дважды: viewControllerd = storyboard.instantiateViewControllerWithIdentifier("a") as? SecondViewController и viewControllerd = SecondViewController.init(title: "helo").

Кроме того, super.init(nibName: "SecondViewController", bundle: nil) не имеет значения, когда вы работаете с раскадрой.
init(coder aDecoder: NSCoder) вызывается при создании экземпляра контроллера вида из раскадровки, и вы можете просто передать ему значение.

Что вы можете сделать, это установить значение для вновь созданного свойства контроллера представления.
E.g.

let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) 
let viewControllerd = storyboard.instantiateViewControllerWithIdentifier("a") as? SecondViewController 
viewControllerd.a = "helo" 
addViewControllerAsChildViewController(viewControllerd!) 
+0

Сэр мы можем не передавать значение с помощью init, только мы делаем в xib – Rishab

+0

@Rishab Я не понял ваш комментарий. Вы не можете передать аргумент из кода контроллеру представления, который создается из раскадровки. –

+0

Снова вы можете передать аргумент, установив значение для некоторого свойства. –

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