Nếu bạn muốn lập trình gọi một segue đẩy, bạn cung cấp cho segue một "id kịch bản" trong Interface Builder và sau đó bạn có thể:
[self performSegueWithIdentifier:"pushToMyVC" sender:self];
Ngoài ra, nếu bạn không muốn thực hiện các segue , bạn có thể khởi tạo trình điều khiển xem đích và sau đó đẩy thủ công vào trình điều khiển chế độ xem đó. Tất cả bạn cần làm là để đảm bảo rằng bộ điều khiển xem đích có riêng "storyboard id" của nó trong giao diện Builder, sau đó bạn có thể:
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"DestinationController"];
[self.navigationController pushViewController:controller animated:YES];
Bạn nói "đẩy" (và vì thế tôi đã sử dụng pushViewController
ở trên). Nếu bạn thực sự có nghĩa là để "trình bày một bộ điều khiển xem phương thức", sau đó dòng thứ hai là:
[self presentViewController:controller animated:YES completion:nil];
Như bạn thấy, bạn không có sử dụng prepareForSegue
để đẩy đến cảnh mới. Bạn chỉ sử dụng prepareForSegue
nếu bạn muốn chuyển thông tin tới bộ điều khiển chế độ xem đích. Nếu không thì không cần thiết.
Rõ ràng, nếu bạn không sử dụng bảng phân cảnh (ví dụ: bạn đang sử dụng NIB), thì quá trình này hoàn toàn khác. Nhưng tôi cho rằng bạn không sử dụng NIB vì prepareForSegue
không áp dụng được trong môi trường đó. Nhưng nếu bạn đang sử dụng NIB, nó sẽ là như sau:
SecondViewController *controller = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
Câu trả lời này rất hữu ích! – Plagorn