Bạn có thể làm như được đề xuất trong câu trả lời này: InstantiateViewControllerWithIdentifier.
Ngoài ra, tôi đang cung cấp cho bạn mã từ câu trả lời được liên kết được viết lại trong Swift vì câu trả lời trong liên kết ban đầu được viết trong Mục tiêu-C.
let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewControllerWithIdentifier("identifier") as! SecondViewController
vc.resultsArray = self.resultsArray
self.navigationController?.pushViewController(vc, animated:true)
EDIT:
Kể từ khi câu trả lời này thu hút được chăm sóc tôi nghĩ rằng tôi cung cấp cho bạn một cách khác để chạy failsafe hơn. Trong câu trả lời ở trên, ứng dụng sẽ gặp sự cố nếu số ViewController
với số "số nhận dạng" không thuộc loại SecondViewController
. Trong Swift bạn có thể ngăn chặn tai nạn này bằng cách sử dụng tùy chọn ràng buộc:
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)
Bằng cách này, ViewController
được đẩy nếu nó là loại SecondViewController
. Nếu không thể được đúc thành SecondViewController
một tin nhắn được in và ứng dụng vẫn còn trên ViewController
hiện tại.
Bạn có thể tạo một phân đoạn trong trình tạo giao diện từ VC1 đến VC2, đặt tên cho nó, sau đó gọi 'performSegueWithIdentifier' từ hành động bạn đã gắn với nút. Sau đó, trong 'prepareForSegue' bạn muốn, đặt trong câu lệnh' if' IDing segue bạn đang dùng, lấy bất cứ thứ gì bạn đang truyền từ VC1, gán nó trên VC2 và BAM ... bạn đã hoàn thành. – Adrian
Adrian, bạn nên đăng bài này như một câu trả lời để OP có thể chấp nhận nó. Đây là câu trả lời đúng cho câu hỏi OPs. –