Tôi có một đại biểu/xử lý mà tôi đã thực hiện trên UIViewControllers của tôi để xử lý thời gian chờ cho một webservice từ xa. Khi một yêu cầu được thực hiện để webservice của tôi, và một mã http timeout được trả lại, các đại biểu được gọi và thực hiện như sau:self.navigationController là nil lần thứ hai ViewController được tải
UINavigationController *navController = self.navigationController;
if (navController) {
[navController popToRootViewControllerAnimated:YES];
} else {
NSLog(@"navController is null/nil");
}
Nếu tôi làm theo các bước sau, navController
được khởi tạo một cách chính xác và hành động popToRootViewController
xảy ra.
- Authenticate ứng dụng của tôi với webservice trên Login ViewController
- Auto kích hoạt một segue đến một CustomMenuViewController
- Chờ webservice để timeout từ xa
- Nhấn vào để kích hoạt một segue để CustomSubMenuViewController
Bây giờ, nếu tôi thực hiện các bước sau, mệnh đề else trong khối mã trên được kích hoạt vì một số lý do navController không được đặt chính xác:
- Authenticate ứng dụng của tôi với webservice trên CustomLoginViewController
- Auto segue đến một CustomMenuViewController
- Ngay lập tức bấm vào để kích hoạt một segue để CustomSubMenuViewController
- Bấm lại nút để kích hoạt một cửa sổ pop
- Chờ webservice để hết thời gian chờ từ xa
- Nhấp để kích hoạt một segue cho cùng một CustomSubMenuViewController
Câu hỏi của tôi là: tại sao khi tôi tải một ViewController lần thứ hai, không self.navigationController trả về null?
Cuộc gọi ngăn xếp trong ví dụ trên sẽ giống như thế này: NavigationController -> CustomLoginViewController -> CustomMenuViewController -> CustomSubMenuViewController
Cảm ơn
UPDATE: Vẫn chưa thực hiện bất kỳ sự tiến bộ về vấn đề này!
Bạn đã loại trừ bất kỳ nguyên nhân nào được mô tả tại http://stackoverflow.com/a/7767160/1445366 và http://stackoverflow.com/q/1983620/1445366? –
Có - tự.navigationController có thể truy cập khi viewController được nạp lần đầu tiên, nó chỉ là null khi bạn điều hướng khỏi nó và sau đó cố gắng quay trở lại nó liên tiếp. – doug
Hãy chắc chắn rằng bạn không làm cho nó rỗng trong ViewDidDisappear hoặc ViewdidUnload – Navi