Ответ 1
Вы можете сделать это, как это предлагается в этом ответе: InstantiateViewControllerWithIdentifier.
Кроме того, я предоставляю вам код из связанного ответа, перезаписанного в Swift, потому что ответ в ссылке был первоначально написан в Objective-C.
let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewControllerWithIdentifier("identifier") as! SecondViewController
vc.resultsArray = self.resultsArray
self.navigationController?.pushViewController(vc, animated:true)
EDIT:
Поскольку этот ответ привлекает некоторое внимание, я думал, что предоставил вам еще один отказоустойчивый способ. В приведенном выше ответе приложение будет аварийно, если ViewController
с "идентификатором" не имеет тип SecondViewController
. В Swift вы можете предотвратить этот сбой с помощью необязательной привязки:
guard let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewControllerWithIdentifier("identifier") as? SecondViewController else {
print("Could not instantiate view controller with identifier of type SecondViewController")
return
}
vc.resultsArray = self.resultsArray
self.navigationController?.pushViewController(vc, animated:true)
Таким образом, ViewController
выталкивается, если он имеет тип SecondViewController
. Если невозможно передать на SecondViewController
, сообщение будет напечатано, и приложение останется на текущем ViewController
.