gpt4 book ai didi

iphone - PageviewController 未按正确顺序显示 View Controller

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:59 24 4
gpt4 key购买 nike

我正在尝试使用 PageviewController。我有 4 个 ViewControllers 但它们各不相同。在一个中我有一张图片,在第二个中我有一个 tableview,...

我想使用 pageviewController 滚动它。所以我所做的是以下内容。我已将它们添加到 modelArray

ViewOneViewController *viewOne = (ViewOneViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"ViewOne"];
ViewTwoViewController *viewTwo = (ViewTwoViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"ViewTwo"];
ViewThreeViewController *viewThree = (ViewThreeViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"ViewThree"];
ViewFourViewController *viewFour =(ViewFourViewController *) [self.storyboard instantiateViewControllerWithIdentifier:@"ViewFour"];

self.modelArray = [[NSMutableArray alloc] initWithObjects:viewOne,viewTwo,viewThree,viewFour,nil];

接下来我像这样设置我的 pageviewController。

 ViewOneViewController *cVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewOne"];
NSArray *viewControllers = [NSArray arrayWithObject:cVC];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

现在浏览 pageviewViewController 我有以下功能。

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController
{
indexValue--;
if (indexValue < 0) {
return nil;
}
return [self.modelArray objectAtIndex:indexValue];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController
{
indexValue++;
if (indexValue > self.modelArray.count) {
NSLog(@"crash");
return nil;
}
return [self.modelArray objectAtIndex:indexValue];
}

我已将 indexValue 声明并合成为 int。但出于某种原因,它有时会向我显示两次 ViewOneController,或者它从 ViewOneController 转到 ViewThreeController 等等。

有人可以帮助我吗?

亲切的问候

编辑

当我这样做的时候。

[self.pageViewController setViewControllers:self.modelArray direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

它因这个错误而崩溃

“提供的 View Controller 数量 (4) 与请求的转换所需的数量 (1) 不匹配”

最佳答案

您的代码中有一些错误。

  1. setViewControllers: 方法将当前 Controller 设置为可见。 self.modelArray 的设置不正确,因为它包含您拥有的所有页面。您需要在 UIPageViewController 初始化后使用它(如果您想强制更改当前页面)。

  2. 您使用 UIPageViewControllerDelegate 的方式不对。 indexValue 类成员不需要。在此方法中,您应该找出下一个 Controller (来自 viewController 方法参数)或前一个 Controller ,并返回另一个 Controller 。

看这段代码:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerBeforeViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[ViewOneViewController class]]) {
return nil;
} else if ([viewController isKindOfClass:[ViewTwoViewController class]]) {
return [self.modelArray objectAtIndex:0]; // return ViewOneViewController class instance
} else if
//... etc
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
viewControllerAfterViewController:(UIViewController *)viewController
{
// vice versa
}
  1. 当您将所有 Controller 存储在一个数组中时,它可能会占用大量内存。我建议您不要保留 modelArray 属性,而是在 UIPageViewControllerDelegate 协议(protocol)方法中实例化它。

祝你好运。

关于iphone - PageviewController 未按正确顺序显示 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com