Вы можете сделать это, как предложено в этом ответе: 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
.
Вы можете создать segue в построителе интерфейса от VC1 до VC2, дать ему имя, а затем вызвать 'performSegueWithIdentifier' из действия, которое вы привязали к кнопке. Затем в 'prepareForSegue' вы положите оператор' if', определяющий используемый вами сегмент, возьмите все, что вы передаете из VC1, назначьте его на VC2 и BAM ... все готово. – Adrian
Adrian, вы должны опубликовать это как ответ, чтобы OP мог его принять. Это правильный ответ на вопрос OP. –