2012-11-06 33 views
6

Tôi đã viết một số ứng dụng iOS cách đây một năm trên phiên bản Xcode cũ. Tôi vừa mới bắt đầu một dự án mới và phát hiện ra tính năng cốt truyện trong Xcode mới nhất. Nó chỉ ra điều này là hoàn hảo cho các ứng dụng tôi viết vì nó bao gồm ~ 30 màn hình liên kết với nhau.Làm cách nào để tránh vòng lặp vô hạn Bảng phân cảnh mô hình

Câu hỏi của tôi là, làm cách nào để cấu trúc bảng phân cảnh và phân biệt để cho phép ứng dụng của tôi theo một đường tròn thông qua màn hình của tôi. Tôi đã thấy một số examples mà chỉ đơn giản là segue màn hình 1 đến màn hình 2 và sau đó màn hình 2 đến màn hình 1 bằng cách sử dụng tùy chọn phương thức. Điều này làm việc rõ ràng nhưng khi tôi gỡ lỗi một ứng dụng được xây dựng theo cách này, nó sẽ khởi tạo một thể hiện mới của mỗi màn hình (bộ điều khiển xem) cho mỗi phân đoạn được thực hiện. Trong biểu đồ dưới đây (xin lỗi, tôi đã vẽ một bức ảnh đẹp nhưng do trạng thái mới của tôi, không thể đăng nó), làm cách nào để chuyển từ màn hình 1 sang màn hình 2 sang màn hình 3 và quay lại màn hình gốc 1 mà không tạo mới ví dụ?

// Screen 1 --> Screen 2 --> Screen3 
// ^      | 
//  |       | 
//  +-------------------------+ 

Trả lời

3

Ok, tôi đã thực hiện một chút công bằng về nghiên cứu kể từ khi đặt câu hỏi này và tôi tin rằng tôi có thể cung cấp câu trả lời hợp lý cho câu hỏi. Tóm lại, cách tiếp cận mà tôi đã đề xuất trong câu hỏi không tương thích với cách mà các bảng phân cảnh và phân đoạn thực sự hoạt động. Phân đoạn luôn luôn khởi tạo một phiên bản mới của bộ điều khiển chế độ xem/chế độ xem mà nó nhắm mục tiêu. Điều này có nghĩa là khi chúng ta chuyển từ màn hình 3 trở lại màn hình 1, chúng ta sẽ tạo một phiên bản mới của màn hình 1 chứ không phải bản gốc. Để giải quyết vấn đề này, tôi sẽ triển khai bảng phân cảnh hơi khác một chút.

// Screen 1 --> Screen 2 
//  | 
//  +------> Screen 3 

tôi sẽ sau đó confiure Màn hình 1 để nghe cho một tin nhắn 'màn hình kế tiếp' (thông qua đại biểu/giao thức) từ màn hình 2 và 3.

Khi người dùng trên màn hình 1 chọn nút cho màn hình 2 , storyboard và segue sẽ xử lý instantal modal của màn hình 2. Khi người dùng trên màn hình 2 chọn nút 'Next Screen', thay vì segueing sang màn hình 3, tôi sẽ loại bỏ màn hình 2 và có màn hình 1 ra mắt Screen 3 thông qua Màn hình 1 -> Màn hình 3 segue.

Cách tiếp cận này có lợi thế là cho phép màn hình 1 là bộ điều khiển chính cho tất cả các màn hình tiếp theo trong vòng lặp (trong trường hợp của tôi, tôi có 10 màn hình/bài tập trong vòng lặp). Nhược điểm duy nhất là bảng phân cảnh không phản ánh đúng dòng chảy của màn hình.

Tôi hy vọng rằng sẽ giúp những người khác cố gắng đạt được điều tương tự trong các dự án iOS của họ.

Các vấn đề liên quan