【发布时间】:2016-05-18 15:05:48
【问题描述】:
基本上,我有一个 Table View Controller 和一个普通的 View Controller,我想制作它以便我可以在应用程序主屏幕上的视图控制器之间滑动(显然是相同类型的视图控制器)。
但我发现UIpageviewcontroller 通常在您有多个相同类型的viewcontroller 视图时使用,例如在图片之间滑动,您可以只在类中设置一个索引和一个数组与索引相关的图像并以这种方式进行设置。
但我试图在这个设置中获得不同的视图控制器。现在是两个,但肯定会上升到大约 4 个。
UIPageViewController 是正确的设置方式还是其他方式。
编辑:下面添加的代码
//
// ViewController.m
// testb
//
#import "MainPostController.h"
#import "MainTableViewController.h"
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize pageViewController;
@synthesize indexValue = _indexValue;
- (void)viewDidLoad
{
[super viewDidLoad];
self.indexValue= 1;
NSLog(@"main intitated");
// Do any additional setup after loading the view, typically from a nib.
self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
self.pageViewController.dataSource = self;
MainTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTableViewController"];
MainPostController *pvc;
NSArray *viewcontrollers =[NSArray arrayWithObjects:tvc, pvc, nil];
[self.pageViewController setViewControllers:viewcontrollers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30);
[self addChildViewController:pageViewController];
[self.view addSubview:pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
if (self.indexValue == 1) {
MainPostController *pvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainPostController"];
self.indexValue = 0 ;
return pvc;
}
else return nil;
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
if (self.indexValue == 0) {
MainTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTableViewController"];
self.indexValue = 1;
return tvc;
}
else return nil;
}
@end
我希望初始视图是表视图控制器 (tvc),我希望后视图控制器 (pvc) 位于其左侧。我可以加载它并轻松地在两者之间滑动,但有时我可以滑动比边界更远,所以基本上如果我从 tvc-->pvc-->tvc 开始,那么我可以通过向右滑动到同一个 tvc 然后走得更远到达边界或通过向左滑动以进行最后一次转换,以其他方式 tvc-->pvc-->tvc-->pvc-->pvc。边界最终到达。一旦应用程序最初在 tvc 启动,我就无法前进页面,(这是应该发生的),如果我去 tvc--> pvc 并尝试转到左侧的页面,它不会让我(这是应该发生的) )
谢谢
【问题讨论】:
-
有什么问题?
UIPageViewController旨在加载多个视图控制器。不要求它们是相同类型的视图控制器。使用标签控制器可能是另一种选择。 -
它们没有正确更改,我在 viewcontroller 中设置了一个显示 pageviewcontroller 的索引,当达到索引的边界时我返回 nil,它仍然将页面更改为再次出现的相同页面
标签: ios objective-c uipageviewcontroller