我有一個UIViewController在橫向模式顯示UINavigationController縱向。當我使用模態segue連接從視圖控制器獲取導航控制器時,出於某種原因,視圖控制器最初被強制爲縱向(最初時它應該處於橫向)。當我刪除賽格時,事情按預期工作。使用segues自動旋轉視圖
期望的行爲是使用從橫向的界面到縱向的另一個界面的模態漸變。
任何想法這裏發生了什麼?或如何使其按預期工作?
我有一個UIViewController在橫向模式顯示UINavigationController縱向。當我使用模態segue連接從視圖控制器獲取導航控制器時,出於某種原因,視圖控制器最初被強制爲縱向(最初時它應該處於橫向)。當我刪除賽格時,事情按預期工作。使用segues自動旋轉視圖
期望的行爲是使用從橫向的界面到縱向的另一個界面的模態漸變。
任何想法這裏發生了什麼?或如何使其按預期工作?
使用通知。
-(void)viewWillAppear:(BOOL) animated{
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(receivedRotate:) name: UIDeviceOrientationDidChangeNotification object: nil];
}
-(void) receivedRotate: (NSNotification*) notification
{
UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
{
[self performSegueWithIdentifier:@"/* Segue from the VCPotrait to VCLandscape*/" sender: self];
}
}
該segue應該是模態的。
你的意思是最初的導航控制器被迫縱向?
我已經完成了這與UIViewController子類,其中我有一個視圖控制器在縱向方向,模式賽格視圖控制器橫向。關鍵是在講第二控制器不自轉任何方向,我不想:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
你要繼承的UINavigationController要能設置,我認爲。
的賽格瑞在故事板定義爲模態,並在第一(主持人)視圖控制器代碼看起來非常正常:
-(IBAction) zoomIn:(id)sender {
[self performSegueWithIdentifier:@"ZoomIn" sender: self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"ZoomIn"]) {
OSZoomViewController *zoom = [segue destinationViewController];
zoom.image = ...;
zoom.presenter = self;
}
}
埃姆,我想你是誤會我的問題。我想知道如何在iPhone打開模態視圖控制器時強制iPhone改變方向。我已經知道如何處理由用戶造成的方向。 – 2011-12-31 00:34:53
我想有一個設備方向屬性。這應該使您能夠設置方向。 – Faser 2012-01-01 13:37:38
如果您指的是UIDevice的orientation屬性,那是隻讀的。 – 2012-01-01 19:43:25