Ich habe den PageControl-Beispielcode von Apple heruntergeladen. Es ist ein Projekt mit UIPageControl
. Ich habe es geändert, so dass die UIScrollView
verschiedene Ansichten hat. Für jede Ansicht, die ich hinzufügen möchte, habe ich eine UINavigationController
mit einer rootViewController
als Unterklasse von entweder UIViewController
oder UITableViewController
erstellt. Dann fügte ich in die UIScrollView
die Ansicht der navigationController
hinzu.Warum wird der übergeordnete Rahmen nach disadowViewControllerAnimated nicht die gleiche Größe beibehalten?
Sagen wir, ich bin jetzt auf den ersten Blick. Ich möchte einen Modal View Controller zeigen. Wenn ich es ablehne, ist der Eltern-View-Controller (HomeViewController
in meinem Beispiel) im Vollbildmodus, anstatt die Größe, die es zuvor war, die die Seitensteuerung am unteren Rand zeigen würde. Der einzige Weg, wie ich es richtig machen kann, ist die Größe des Frames nach der Kündigung, aber das ist eine schlechte Benutzererfahrung, weil es aufgerufen wird, nachdem der Eltern-View-Controller angezeigt wird. Haben Sie Ideen, wie Sie vermeiden können, dass der Rahmen HomeViewController
geändert wird, wenn Sie einen Modal-View-Controller ablehnen?
-(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;
}
}
}
Haben Sie jemals herausgefunden, warum das so ist? – aloo
@aloo Es ist jetzt fast ein Jahr her, also kann ich mich nicht erinnern, wie ich das repariert habe. Haben Sie das gleiche Problem? – Adriana
ja erlebt es, aber ich kann es nicht reproduzieren in einem kleinen Testprojekt – aloo