Lý do: Có thể có nhiều khả năng xảy ra sự cố này.
1) Nếu của viewController
xem bạn là một subView
của một số khác rootViewController
mà không phải là một navigationController
, sau đó có thể có cơ hội mà cuộc gọi luân chuyển không được tuyên truyền để điều khiển của subview.
2) Một nơi nào đó tôi đọc rằng nếu phương pháp Super
không được gọi đúng nơi cần thì có thể là nguyên nhân của sự cố xoay vòng, có nghĩa là tất cả ViewControllers trong ngăn xếp xem có liên quan đến autorotation phải gọi phương thức super
trong việc triển khai phương thức (tức là gọi [super viewDidLoad]
từ ViewController's viewDidLoad
).
Bạn có thể sử dụng mẹo dưới đây để xử lý các thay đổi định hướng.
Đăng ký trình thông báo trong chế độ xemWillAppear.
-(void)viewWillAppear:(BOOL)animated{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];}
Thay đổi hướng sẽ thông báo cho chức năng bên dưới.
- (void)orientationChanged:(NSNotification *)notification{
[self handleOrientation:[[UIApplication sharedApplication] statusBarOrientation]];}
sẽ gọi phương thức dưới đây để bạn có thể xử lý các thay đổi định hướng.
- (void) handleOrientation:(UIInterfaceOrientation) orientation {
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
{
//handle the portrait view
}
else if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{
//handle the landscape view
}
}
Nguồn
2013-01-05 10:02:50
Lý do số 2 giải quyết được sự cố của tôi ... Siêu phải được gọi là – lucaslt89