2012-04-25 32 views
11

Tôi đang cố gắng kích hoạt phân đoạn bảng phân cảnh ngay sau khi viewDidLoad được gọi trên bộ điều khiển chế độ xem. Các segue có một định danh kèm theo, và hoạt động tốt khi được gọi từ bên trong một phương thức liên quan đến một nút hoặc điều khiển khác. Nhưng nó không hoạt động bên trong viewDidLoad. Nó âm thầm không thành công. Có một số quy tắc về segue bị bỏ qua trong viewDidLoad?Tại sao không thực hiệnSegueWithIdentifier làm việc bên trong viewDidLoad?

Tôi đã thử cả hai điều này:

[self performSegueWithIdentifier: @"mySegue" 
          sender: self]; 

và điều này:

[self dismissViewControllerAnimated:YES completion:^() { 
[self performSegueWithIdentifier:@"mySegue" sender:self]; 
}]; 

Không làm việc.

+0

Tại sao bạn muốn tải một chế độ xem khác chỉ khi một chế độ xem khác sắp xuất hiện? Bạn đã thử thêm nó vào "viewWillAppear" thay thế (altho tôi không hiểu tại sao bạn sẽ muốn điều đó). – Pochi

Trả lời

19

Bạn không thể bỏ qua trình điều khiển chế độ xem chưa được trình bày. didLoad có chức năng quản lý bộ nhớ hoàn toàn, bạn có thể sử dụng nó như là một phần của một hàm tạo. Điều gì có thể hiệu quả, là bắt đầu một khoảng cách trong viewDidAppear, tuy nhiên tôi khuyên bạn nên bắt đầu với chế độ xem bạn muốn ở lần đầu tiên.

1

Rất có thể lý do có thể khiến hệ điều hành bỏ qua cuộc gọi chuyển tiếp màn hình thứ hai trong khi một cuộc gọi đang diễn ra. Trong ViewDidLoad của bạn, quá trình chuyển đổi chế độ xem (của chế độ xem hiện tại) vẫn chưa hoàn tất. Bạn đang yêu cầu một quá trình chuyển đổi khác trước khi nó hoàn thành và hệ điều hành bỏ qua nó. Nó phải là lý do mà segue hoạt động khi được gọi từ một hàm khác. Thử gọi bên trong ViewDidAppear (hoặc sau một khoảng thời gian trễ)

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