Tôi đã tải xuống mã mẫu PageControl từ apple. Đó là một dự án với UIPageControl
. Tôi đã thay đổi nó để UIScrollView
có các chế độ xem khác nhau. Đối với mỗi chế độ xem tôi muốn thêm, tôi đã tạo một UINavigationController
với rootViewController
làm lớp con của UIViewController
hoặc UITableViewController
. Sau đó, tôi đã thêm vào số UIScrollView
, chế độ xem của navigationController
.Tại sao khung chính không giữ nguyên kích thước sau khi bỏ quaViewViewControllerAnimated?
Giả sử tôi đang ở chế độ xem đầu tiên, ngay bây giờ. Tôi muốn hiển thị một bộ điều khiển xem phương thức. Khi tôi loại bỏ nó, bộ điều khiển xem cha mẹ (HomeViewController
trong ví dụ của tôi) ở chế độ toàn màn hình, thay vì kích thước trước đó, điều này sẽ hiển thị điều khiển trang ở dưới cùng. Cách duy nhất tôi có thể làm cho nó hoạt động đúng là bằng cách thay đổi kích thước khung hình sau khi loại bỏ, nhưng đó là một trải nghiệm người dùng xấu, bởi vì nó được gọi sau khi bộ điều khiển xem cha được hiển thị. Bất kỳ ý tưởng về làm thế nào để tránh các HomeViewController
khung được thay đổi kích cỡ khi loại bỏ một bộ điều khiển xem phương thức?
-(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;
}
}
}
bạn đã bao giờ tìm ra lý do tại sao điều này là đúng? – aloo
@aloo Đã gần một năm rồi, nên tôi không nhớ làm cách nào để khắc phục điều này. Bạn có gặp vấn đề tương tự không? – Adriana
có kinh nghiệm nhưng tôi không thể tái tạo nó trong một dự án thử nghiệm nhỏ – aloo