Why doesn't the parent frame have the same size after rejecting the ViewControllerAnimated?

I downloaded the PageControl sample code from apple. This is a project with UIPageControl. I changed it so that I UIScrollViewhad different ideas. For each view I want to add, I created UINavigationControllerwith rootViewControlleras a subclass of either UIViewController, or UITableViewController. Then I added to the UIScrollViewview navigationController.

Let's say I'm at a glance now. I want to show modal view controller. When I reject it, the parent view controller ( HomeViewControllerin my example) is in full screen mode, and not in the size that it was before that the page control at the bottom will show. The only way to make it work correctly is to resize the frame after being fired, but this is a bad user interface because it is called after the parent view controller is displayed. Any ideas on how to avoid changing the frame size HomeViewControllerwhen disabling the modal view controller?

-(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 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;
    }
}
}
+5
source share
2 answers

veiwControllers , viewControllers, , - .

HomeViewController appdelegate, viewcontroller, , HomeViewController.view, , , rejectViewControllerAnimated.

+2

viewcontroller childViewController.

:

[scrollView addSubview: navController.view];

: [scrollView addChildViewController: navController];

0

All Articles