Я нашел довольно много на эту тему, но я просто не могу понять это. Любая помощь будет высоко ценится!
У меня есть приложение, настроенное с помощью UITabBarController. На одной из вкладок я показываю UITableView, который использует UINavigationController для обеспечения иерархии. Все таблицы вращаются очень хорошо при изменении ориентации, пока я не доберусь до того, что фактически является окончательным представлением в иерархии.
Окончательный вид - , а не - UITableView, просто базовый UIView. Но я не могу заставить эту страницу успешно вращаться! Я переделал вид с необходимыми абсолютными основами, и он все еще не хочет работать! Код приведен ниже, но в настоящее время он представляет собой стандартный шаблон, в котором ничего нет.
Кроме того, я не использую InterfaceBuilder, и долженAutorotateToInterfaceOrientation присутствует на всех видах. Это единственное, с чем у меня проблемы.
SomeView.h
#import <UIKit/UIKit.h>
@interface SomeView : UIViewController
{
NSString *someID;
NSString *someName;
}
@property(nonatomic,retain) NSString *someID;
@property(nonatomic,retain) NSString *someName;
@end
SomeView.m
#import "SomeView.h"
#import "AppDelegate.h"
@implementation SomeView
@synthesize someID, someName;
-(void)loadView
{
}
-(void)viewDidLoad
{
[super viewDidLoad];
}
-(void)viewDidUnload
{
[super viewDidUnload];
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return YES;
}
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
NSLog(@"willAnimateRotationToInterfaceOrientation");
}
-(void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
-(void)dealloc
{
[super dealloc];
}
@end
ОБНОВЛЕНИЕ 10 ноября 2011
У меня все еще есть эта проблема, однако, просматривая документы и биты, похоже, это моя проблема (http://developer.apple.com/library/ios/#qa/qa1688/_index.html)
Свойство UIView контроллера представления встроено в UIWindow, но вместе с дополнительным контроллером представления.
Может возникнуть ситуация, когда shouldAutorotateToInterfaceOrientation вызывается один раз при запуске для данного контроллера представления, но никогда не вызывается снова, когда устройство поворачивается. Поскольку контроллеры представлений тесно связаны с представлениями, которыми они управляют, они также являются частью цепочки респондентов, используемой для обработки событий. Контроллеры представления сами являются потомками класса UIResponder и вставляются в цепочку респондента между управляемым представлением и его суперпредставлением. Поэтому обычной практикой является использование одного основного контроллера представления в вашем приложении как части цепочки респондента. Обычно вы добавляете один основной контроллер представления, такой как UINavigationController, UITabBarController или универсальный UIViewController, в ваше UIWindow. Например, это можно сделать, позвонив по номеру:
[myWindow addSubview: primaryViewController.view];
Если вы добавите свойство UIView дополнительного контроллера представления в UIWindow (на том же уровне, что и основной контроллер представления) с помощью следующего:
[myWindow addSubview: anotherController.view];
этот дополнительный контроллер представления не будет получать события вращения и никогда не будет вращаться. Будет вращаться только первый контроллер представления, добавленный в UIWindow.