我有一个UIPageViewController
我在RootViewController的viewDidLoad
方法中设置如下:
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
成功调用委托pageViewControllerspineLocationForInterfaceOrientation
,我可以相应地设置主干。
但是,我想在按钮上单击设置PageViewController,所以我将代码移动到按下按钮事件的事件处理程序。现在没有调用委托。
我有什么想法可以解决它?
答案 0 :(得分:1)
这有些复杂但可以通过以下代码实现:
步骤1:将以下代码添加到rootViewController的.h文件中。
@property (strong, nonatomic) IBOutlet UIButton *previousClick;
@property (strong, nonatomic) IBOutlet UIButton *nextClick;
第2步:将它们连接到您使用过的xib或故事板。
步骤3:将两个IBAction方法添加到.m文件中。
#pragma mark - IBAction Methods
- (IBAction)previousClick:(id)sender
{
[_modelController pageViewController:self.pageViewController viewControllerBeforeViewController:_dataViewController];
}
- (IBAction)nextClick:(id)sender
{
[_modelController pageViewController:self.pageViewController viewControllerAfterViewController:_dataViewController];
}
步骤4:您还需要将以下行放到.m文件
@interface RootViewController ()
@property (readonly, strong, nonatomic) ModelController *modelController;
@property (readonly, strong, nonatomic) DataViewController *dataViewController;
@end
并将它们合成如下
@synthesize modelController = _modelController;
@synthesize dataViewController = _dataViewController;
第5步:最后和最后一行添加到- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
方法的下一行。
_dataViewController = currentViewController;
在currentViewController的alloc init调用之后。
如果你发现pageViewController隐藏了添加的按钮,只需使用-viewDidLoad
方法旁边的代码将它们带到前面
[self.view bringSubviewToFront:self.previousClick];
[self.view bringSubviewToFront:self.nextClick];