我整个下午都被这个问题困扰了。 我做了一个自定义的 UIViewController。到目前为止,我在这个自定义 View Controller 中显示了自定义 View 。一切都很好。现在我想做的是在自定义 Controller 内显示一个 pageviewcontroller。没有错误,但是页面 Controller 的 View 显示在自定义 Controller 的边界之外(。
这是我的代码
- (void)viewDidLoad
{
[super viewDidLoad];
self.monthYearController = [[avvAgendaMonthViewController alloc] init];
self.yearViewController = [[avvAgendaYearViewController alloc] init];
self.pager = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
//Assign the delegate and datasource .
self.pager.delegate = self;
self.pager.dataSource = self;
//Set the initial view controllers.
NSArray *viewControllers = [NSArray arrayWithObject:self.yearViewController];
[self.pager setViewControllers:viewControllers
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
//Add the pageViewController as the childViewController
[self addChildViewController:self.pager];
[self.view addSubview:self.pager.view];
[self.pager didMoveToParentViewController:self];
CGRect pageViewRect = self.view.bounds;
pageViewRect = CGRectInset(pageViewRect, 40.0, 40.0);
self.pager.view.frame = pageViewRect;
//Assign the gestureRecognizers property of our pageViewController to our view's gestureRecognizers property.
self.view.gestureRecognizers = self.pager.gestureRecognizers;
这是界面(非常简单):
@interface CustomNavigatorViewController : UIViewController <CustomNavigationDelegate,UIPageViewControllerDataSource,UIPageViewControllerDelegate>
@property (nonatomic,strong) CustomNavigation* navigation;
@property (nonatomic,strong) UIPageViewController *pager;
@property (nonatomic,strong) AgendaYearViewController* yearViewController;
@property (nonatomic,strong) AgendaMonthViewController* monthYearController;
@property (nonatomic,strong) UIViewController* agendaCurrentView;
@end
我尝试(按照第一个答案中的建议)在最后调用 didMoveToParentViewController:
CGRect pageViewRect = self.view.bounds;
pageViewRect = CGRectInset(pageViewRect, 40.0, 40.0);
self.pager.view.frame = pageViewRect;
[self.pager didMoveToParentViewController:self];
但没有运气,如图所示:
自定义 View Controller 位于日历 View 下方。日历 View 应该位于自定义 View Controller 内部而不是外部。 另外,怎样才能把书脊放在上面呢?
[已解决] 没关系:第一个答案是正确的。我的错误是框架设置错误。
最佳答案
我遇到了完全相同的问题。在调用 didMoveToParentViewController:
之前设置页面 View Controller 的框架应该可以解决它。
关于自定义 UIViewController 内的 UIPageViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17597051/