UIViewController автоповорот не работает - PullRequest
0 голосов
/ 08 ноября 2011

Я нашел довольно много на эту тему, но я просто не могу понять это. Любая помощь будет высоко ценится!

У меня есть приложение, настроенное с помощью 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.

Ответы [ 2 ]

1 голос
/ 26 августа 2012

Мой UITabBarController остановился для автоматического поворота, когда я добавил к нему новый navigationController с tableViewController и не заметил, что firstAutorotateToInterfaceOrientation моего пользовательского контроллера навигации возвращает YES только для одной ориентации.Решение состоит в том, чтобы проверить функцию mustAutorotateToInterfaceOrientation в каждом контроллере внутри TabBarController.

Может быть, это кому-нибудь поможет.

0 голосов
/ 10 ноября 2011

И я понял это ... Я искал код, который помещает UIViewController в стек, и я не полностью инициировал UIViewController.

...