Представить uiviewcontroller из ParentViewController в Swift 4 - PullRequest
0 голосов
/ 29 октября 2018

У меня есть родительское представление, которое имеет 2 дочерних представления, я пытаюсь показать uiviewcontroller как «Представлять модально». Я использую следующий код:

class ParentCtrl: ButtonBarPagerTabStripViewController {
    let obj = ChildCtrl()
override func viewDidLoad() {
        super.viewDidLoad()
        obj.someClassMethod()
    }
}

class ChildCtrl: UIViewController, IndicatorInfoProvider {
   struct Storyboard {
    static let segue_id = "segue_id"
}
   public func someClassMethod(){
        self.performSegue(withIdentifier: Storyboard.segue_id, sender: self)
    }

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if(segue.identifier == Storyboard.segue_id){
            let destino = segue.destination as! NewViewController
            destino.seleccion = seleccion
        }
    }
}

Но я получаю следующую ошибку:

не имеет перехода с идентификатором 'segue_id' ' Но да, у меня есть этот идентификатор, потому что если я скопирую:

self.performSegue(withIdentifier: Storyboard.segue_id, sender: self)

в методе viewDidload представлен NewViewController

Как я могу решить это?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы просто создаете экземпляр ChildCtrl, а не используете экземпляр, полученный из раскадровки. В результате этот экземпляр ничего не знает ни о каком файле раскадровки и поэтому не имеет контекста для выполнения перехода.

Вам необходимо выполнить переход из экземпляра ChildCtrl, который находится на экране .

0 голосов
/ 29 октября 2018

Укажите идентификатор Раскадровки Segue , т.е.

enter image description here

И используйте этот идентификатор при написании кода для выполнения segue, т.е.

self.performSegue(withIdentifier: "segue_id", sender: self)

Изменить:

Создать obj из storyboard, т.е.

let obj = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildCtrl") as! ChildCtrl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...