我已經從蘋果下載了PageControl示例代碼。這是一個UIPageControl
的項目。我已經改變了它,以便UIScrollView
有不同的看法。對於我想添加的每個視圖,我創建了UINavigationController
,其中rootViewController
作爲UIViewController
或UITableViewController
的子類。然後我加入UIScrollView
,查看navigationController
。爲什麼在dismissViewControllerAnimated之後,父框架不能保持相同的大小?
假設我現在正處於第一種觀點。我想展示一個模態視圖控制器。當我解僱它時,父視圖控制器(在我的示例中爲HomeViewController
)全屏顯示,而不是以前的大小,這將顯示底部的頁面控件。我可以正常工作的唯一方法是在關閉後調整框架大小,但這是一種糟糕的用戶體驗,因爲它在顯示父視圖控制器後調用。關於如何避免HomeViewController
框架在解除模態視圖控制器時調整大小的任何想法?
-(void)dismissMVC:(id)sender {
CGRect frame = self.view.frame;
[self dismissViewControllerAnimated:YES completion:^{
self.view.frame = frame;
}];
}
- (void)loadScrollViewWithPage:(int)page
{
if (page < 0)
return;
if (page >= kNumberOfPages)
return;
// replace the placeholder if necessary
switch (page) {
case Home:
{
HomeViewController *controller = [viewControllers objectAtIndex:page];
if ((NSNull *)controller == [NSNull null])
{
controller = [[HomeViewController alloc] initWithPageNumber:page];
[viewControllers replaceObjectAtIndex:page withObject:controller];
[controller release];
}
// add the controller's view to the scroll view
if (controller.view.superview == nil)
{
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
navController.navigationBar.barStyle = UIBarStyleBlack;
[navController setNavigationBarHidden:YES];
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 20;
frame.size.height = frame.size.height - 20;
navController.view.frame = frame;
controller.view.frame = frame;
[controller setNavController:navController];
[scrollView addSubview:navController.view];
[navController release];
}
break;
}
}
}
你有沒有想過爲什麼這是真的? – aloo
@aloo現在已經快一年了,所以我不記得我是如何解決這個問題的。你有同樣的問題嗎? – Adriana
沒錯,但是我不能在一個小測試項目中重現它 – aloo