Tôi có bộ điều khiển điều hướng. Một trong các chế độ xem thêm các bản xem phụ tùy chỉnh trong số viewDidAppear:
. Tôi nhận thấy rằng lần đầu tiên tôi điều hướng đến một thể hiện của bộ điều khiển chế độ xem này sau khi khởi chạy ứng dụng, viewDidAppear:
gọi hai lần. Nếu tôi bật chế độ xem này khỏi ngăn xếp và điều hướng lại, viewDidAppear:
chỉ gọi một lần cho mỗi lần xuất hiện. Tất cả các lần xuất hiện tiếp theo đều gọi viewDidAppear:
một lần.viewDidAppear được gọi hai lần trên cùng một trường hợp, nhưng chỉ lần đầu tiên lớp này tải biểu mẫu NIB
Vấn đề đối với tôi là lần đầu tiên tôi nhận được quan điểm này, tôi kết thúc gấp đôi số lượng các bản xem trước. Tôi làm việc xung quanh vấn đề này bằng cách giới thiệu một biến cờ hoặc một số như vậy, nhưng tôi muốn hiểu những gì đang xảy ra và làm thế nào để tôi nhận được hai invocations trong những trường hợp này.
Tôi có điểm ngắt trong 'viewDidAppear:'. Làm thế nào nó có thể trả lời câu hỏi tại sao? – iter
Nhìn vào dấu vết ngăn xếp để tìm hiểu lý do tại sao hệ thống đang gọi phương thức này. Nếu backtrace là khác nhau cho cả hai cuộc gọi, bạn có thể sử dụng điều này để thử và tìm ra những gì đang xảy ra. Điều này có thể hoặc có thể không hữu ích mặc dù, tùy thuộc vào chính xác những gì được chứa trong backtrace. –
Các ngăn xếp trông giống hệt nhau, do đó sự ngạc nhiên của tôi theo đề xuất của bạn. Giải pháp của tôi là cấu trúc lại mã để tôi có thể gọi mã trong 'viewDidAppear:' gián tiếp từ 'viewDidLoad:', và vì vậy tránh toàn bộ vấn đề. Tôi chấp nhận câu trả lời của bạn mặc dù lời kêu gọi kép vẫn là một bí ẩn đối với tôi. – iter