2010-08-11 54 views
0

簡單的iPad應用程序。自定義UIViewController子視圖不旋轉,但superview呢,幫我找出原因?

應用程序加載並顯示由UIViewController的子類控制的UITableView。 這工作和完美旋轉。

單擊表格視圖中的一行會導致創建一個新的子視圖,該子視圖也由UIViewController子類控制。 縱向顯示效果良好,但不適應橫向效果,不響應設備旋轉。

的這兩個視圖控制器已經inlcuded:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    NSLog(@"Responding to rotation"); 
    return YES; 
} 

然而只有原來的視圖控制器響應此:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    NSLog(@"View About to rotate"); 
} 

在IB我已檢查該視圖將自動調整和內的組件它(一個UIScrollView和一些UILabels)會正確調整。

任何人都可以幫助我解決爲什麼子視圖不響應。

回答

0

不確定,但AFAIK一次只有一個UIViewController處於活動狀態(從UIKit接收事件方面)。您的第二個視圖控制器是通過-presentModalViewController推送的:animated:?如果沒有,您可能需要將接收事件的那個方法(也可能是其他方法)與-willRotateToInterfaceOrientation方法進行代理。

+0

第二視圖控制器由 加載[self.view.window addSubview:detailVC.view]; [self.view.window bringSubviewToFront:detailVC.view]; – Cocoadelica 2010-08-11 11:23:35

+0

你認爲我錯誤地爲加載的子視圖使用第二個視圖控制器嗎?我是否應該通過編程方式創建它,並將它作爲一個視圖進行加載並從同一個根視圖控制器中進行控制? – Cocoadelica 2010-08-11 15:34:43

5

我發現從我的一個朋友的答案...

我用

[mainView.view.window addSubview detailView.view]; 

添加子視圖到視圖但是,這是將它添加到窗口不是視圖和自該窗口只將旋轉事件傳遞給一個視圖控制器,我將我的子視圖放在錯誤的位置。 相反,我改變它...

[mainView.view addSubview detailView.view]; 

哪些工作! 只需要添加代碼,以便在旋轉時調整子視圖的大小並完成。

在這裏尋找進一步信息:http://developer.apple.com/iphone/library/qa/qa2010/qa1688.html