基本上,我有一个表视图控制器和一个普通的视图控制器,我想这样做,以便我可以在视图控制器之间滑动,就像在应用程序的主屏幕上一样(显然是相同类型的视图控制器)。
但我发现的是UIpageviewcontroller
通常当您有同一类型的多个视图时使用viewcontroller
例如,在图片之间滑动,您可以在类中设置一个索引以及与该索引相关的图像数组,并以这种方式进行设置。
但我试图在这个设置中获得不同的视图控制器。目前是 2 个,但肯定会增加到 4 个左右。
Is 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 并尝试转到左侧的页面,它不会让我前进(这是应该发生的情况) )
Thanks
终于完成了,不必向不同的类添加任何属性。刚刚测试了班级。代码如下:
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[MainTableViewController class]]) {
MainPostController *pvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainPostController"];
return pvc;
}
else return nil;
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[MainPostController class]]) {
MainTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTableViewController"];
return tvc;
}
else return nil;
}
添加更多视图控制器应该很容易,因为我只需要添加 else if 语句来测试它们。主要的问题解决者是 isKindOfClass 方法:
谢谢你们的回复!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)