Tôi muốn đề xuất một cách tiếp cận khác cho vấn đề này. Thay vì sử dụng bộ điều khiển điều hướng để bật bộ điều khiển xem, hãy sử dụng các khoảng cách thư giãn. Giải pháp này có một vài ưu điểm nhưng thực sự quan trọng:
- Bộ điều khiển gốc có thể quay trở lại bất kỳ bộ điều khiển đích nào khác (không chỉ bộ điều khiển trước) mà không biết gì về đích.
- Phân biệt đẩy và pop được xác định trong bảng phân cảnh, do đó không có mã điều hướng trong bộ điều khiển xem của bạn.
Bạn có thể tìm thêm thông tin chi tiết trong từng bước phân đoạn . Cách giải thích tốt hơn trong liên kết cũ, bao gồm cách gửi dữ liệu trở lại, nhưng ở đây tôi sẽ giải thích ngắn gọn.
1) Đi đến bộ điều khiển xem đích (không phải gốc) và thêm một khoảng cách thư giãn:
@IBAction func unwindToContact(_ unwindSegue: UIStoryboardSegue) {
//let sourceViewController = unwindSegue.source
// Use data from the view controller which initiated the unwind segue
}
2) CTRL kéo từ bộ điều khiển xem bản thân để biểu tượng xuất cảnh trong bộ điều khiển xem xuất xứ:
3) Chọn chức năng thư giãn bạn vừa tạo vài phút trước:
4) Chọn segue thư giãn và đặt tên cho nó:
5) Đi đến bất kỳ nơi nào của bộ điều khiển xem gốc và gọi segue thư giãn:
performSegue(withIdentifier: "unwindToContact", sender: self)
Tôi đã tìm thấy cách tiếp cận này hoàn trả rất nhiều khi điều hướng của bạn bắt đầu trở nên phức tạp.
Tôi hi vọng điêu nay se giup được ai đo.