[英]Incorrect frame size/orientation after switching from UINavigationController to a UISplitViewController
我試圖在我的應用程序中僅對一個選項卡使用UISplitViewController(其他選項卡使用導航控制器和不同的ViewControllers)。
我已經在MainWindow.xib中添加了SplitViewController(這是我可以使其正常工作的唯一方法),但是當通常調用didFinishLaunchingWithOptions時,我沒有將其添加到窗口中,因此SplitViewController保持隱藏狀態。
當我單擊選項卡時,我在委托窗口中調用一些代碼以隱藏導航控制器,並使用以下方法將SplitViewController放在適當的位置:
[window addSubview:splitViewController.view];
如果iPad處於橫向模式,則由於某些原因,SplitViewController仍認為它處於縱向模式,並且根視圖和詳細視圖控制器的框架不正確。 如果我開始旋轉iPad,那么一切正常。 只是最初的電話是錯誤的。
看起來SplitViewController沒有被通知初始的景觀旋轉,因為它是隱藏的。
在第一個調用過程中,根控制器的幀rect為320 x 980,如果將iPad旋轉到縱向,然后又回到橫向模式,則幀rect為320 x 724。
大小錯誤的問題是它不會在根控制器的TableView中顯示最后一項。
我試圖更改根控制器的ViewDidLoad和ViewWillAppear中的幀大小,但沒有任何改變。
任何幫助將非常感激。
奇怪的是,在viewDidLoad方法中修復了detailViewController的大小,從而解決了此問題。
self.view.frame = CGRectMake(321, 0, 703, 699);
我有完全相同的配置:一個作為rootController的tabBarController,帶有一個splitViewController和幾個viewControllers。
也許這可以對您有所幫助。
我有一個iPad應用程序,帶有一個帶有多個標簽頁/頁面的標簽欄。 其中一頁使用拆分視圖控制器,左視圖也包含導航控制器。 輪換方面似乎運行良好。 這是我的設置方法:
MyLeftViewController *viewController = [[MyLeftViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[viewController release];
MyRightViewController *rightView = [[MyRightViewController alloc] init];
UISplitViewController *splitViewController = [[UISplitViewController alloc] init];
splitViewController.viewControllers = [NSArray arrayWithObjects:navController, rightView, nil];
[rightView release];
[navController release];
splitViewController.delegate = rightView;
[viewControllersArray addObject:splitViewController];
[splitViewController release];
...add other view controllers to viewControllersArray...
tabBarController.viewControllers = viewControllersArray;
[viewControllersArray release];
[window addSubview:tabBarController.view];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.