5

Tôi đang cố gắng chuyển từ một bộ điều khiển xem hỗ trợ cảnh quan (trong khi ở chế độ ngang), thành chế độ hiển thị không hỗ trợ cảnh quan (và không nên). Tôi đang thực hiện việc này như sau:Vấn đề pushViewController từ Landscape đến Portrait

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    return (toInterfaceOrientation == UIInterfaceOrientationPortrait); 
} 

Lý tưởng nhất là tôi muốn chế độ xem mới mà tôi đang đẩy vào ngăn xếp để bắt đầu tắt theo chiều dọc chứ không phải phong cảnh. Ngẫu nhiên ngay cả với phương pháp này được thực hiện, nó bắt đầu tắt trong Landscape.

Đoán duy nhất của tôi là Apple không muốn người dùng chuyển từ chế độ ngang sang dọc (mặc dù cho phép chúng tôi đi từ cảnh quan, quay lại bộ điều khiển trước đó ở chế độ dọc).

Mọi thông tin chi tiết và/hoặc trợ giúp sẽ được đánh giá cao.

Trả lời

10

Tôi đã tìm được cách ép buộc chân dung. Đó là một chút hack, nhưng ở đây nó được. Trong - (void) viewDidLoad của viewController mà bạn muốn để buộc chân dung cho làm như sau:

UIViewController *viewController = [[UIViewController alloc] init]; 
[self presentModalViewController:viewController animated:NO]; 
[self dismissModalViewControllerAnimated:NO]; 
[viewController release]; 

này bắt buộc người chân dung, bằng cách trình bày một bộ điều khiển (mà chỉ hỗ trợ chân dung theo mặc định).

+0

Điều này đã làm cho tôi di chuyển từ chế độ xem dọc sang chế độ chỉ xem ngang qua pushViewController. Tiết kiệm cho bạn phải gọi API riêng tư không có giấy tờ [[UIDevice currentDevice] setOrientation: UIDeviceOrientationLandscapeRight] Cảm ơn! – MyCSharpCorner

+0

hack đẹp ... đến thật tiện dụng ... :) – Roshit

4

Bạn sẽ cần trình bày bộ điều khiển chế độ xem mới một cách bình thường. Nếu bộ điều khiển xem của bạn tồn tại trong bộ điều khiển điều hướng, thì hướng của tất cả bộ điều khiển xem trong ngăn xếp nav được ngụ ý bởi bộ điều khiển chế độ xem gốc trong ngăn xếp. Bất kể bộ điều khiển xem gốc của bạn trong ngăn xếp nav trả về từ shouldAutoRotateToInterfaceOrientation sau đó được sử dụng cho tất cả các bộ điều khiển khung nhìn bên dưới nó.

+0

Tôi hiểu rồi, đây là điều tôi cho là đúng. Cảm ơn bạn đã làm rõ! – Sahil

1

Câu trả lời của Sahil ở trên không được chấp nhận kể từ iOS 6.0. Tuy nhiên, những điều sau đây dường như cũng làm như vậy:

UIViewController *viewController = [[UIViewController alloc] init]; 
[self presentViewController:viewController animated:NO completion:nil]; 
[self dismissViewControllerAnimated:NO completion:nil]; 
[viewController release]; 
Các vấn đề liên quan