2

私は午後中ずっとこの問題に悩まされています。カスタム UIViewController を作成しました。これまで、このカスタム ビュー コントローラー内のカスタム ビューを示してきました。大丈夫だ。今私がやりたいことは、カスタム コントローラー内に pageviewcontroller を表示することです。エラーはありませんが、pagecontroller のビューがカスタム コントローラー (.

これが私のコードです

- (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];

しかし、写真が示すように運が悪い: カスタム ビュー コントローラーはカレンダー ビューの下にあります。 カレンダー ビューは、カスタム ビュー コントローラーの外側ではなく内側にある必要があります。

カスタム ビュー コントローラーはカレンダー ビューの下にあります。カレンダー ビューは、カスタム ビュー コントローラーの外側ではなく内側にある必要があります。さらに、どうすれば背骨を上に置くことができますか?

[解決済み] 気にしない: 最初の答えは正しかった。私の間違いは間違ったフレームセットでした。

4

1 に答える 1

2

私はまったく同じ問題を抱えていました。呼び出す前にページ ビュー コントローラーのフレームを設定すると、didMoveToParentViewController:解決されるはずです。

于 2013-07-11T15:14:02.937 に答える