使用按钮将 childViewController 加载到滚动视图父级

Posted

技术标签:

【中文标题】使用按钮将 childViewController 加载到滚动视图父级【英文标题】:Load childViewController to scrollview parent with a button 【发布时间】:2013-12-02 12:55:14 【问题描述】:

我正在使用 PageViewController (https://www.cocoacontrols.com/controls/pageviewcontroller) 创建一个类似于 Wired 的杂志应用程序。

我在 CustomPagerViewController 上使用了这段代码来加载子视图:

- (IBAction)btn_index:(id)sender 

NSInteger currentPage = 3;
CGPoint offset = CGPointMake(currentPage * self.scrollView.frame.size.width, 0);
[self.scrollView setContentOffset:offset animated:YES];

但是我需要 indexviewcontroller 上的几个按钮来加载正确的视图,当我使用相同的代码时,

在类型的对象上找不到属性“scrollView” 'Pag4_5ViewController *'

我已经搜索并尝试了几种方法,但都是徒劳的。

有人知道如何解决这个问题吗?

【问题讨论】:

“scrollView”是 Scrollview 的一个出口吗?你合成了吗? @Abhijit Chaudhari 是的,scrollView 是“@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;”我已经在 PagerViewController 上合成了它。实际上我已经使用了链接中的 PagerViewController.h 和 .m。 您在哪里定义 btn_index 操作?什么是“Pag4_5ViewController”。 @AbhijitChaudhari btn_index 是在我杂志的索引页 Pag4_5ViewController 中定义的。我需要几个按钮来“加载”正确的杂志页面而不会丢失滚动 您使用了来自PageViewController 的PagerViewController.hPagerViewController.m,但Pag4_5ViewController 是什么?它是PagerViewController 的子类?还是你重写?属性scrollPag4_5ViewController.h 文件中声明?您的错误消息表示 Pag4_5ViewController 部分中未在 @interface 部分中声明的属性 scroll 和超类,或在超类中声明为 private 【参考方案1】:

找到聊天解决方案后,需要修复。问题是 self 在此上下文(Pag4_5ViewController.m 文件)中指向 Pag4_5ViewController 的实例,并且需要访问类 CustomPagerViewController 实例的方法。熟悉项目后找到了解决方案。以及下面给出的实施例之一:

添加到 Pag4_5ViewController 类(和其他类)行:

#import "CustomPagerViewController.h"

并将代码更改为这样的:

- (IBAction)btn_index:(id)sender

  CustomPagerViewController *parent = (CustomPagerViewController *)[self parentViewController];
  //page number where the transition will be accomplished
  NSInteger currentPage = 3;// 3 in Pag4_5ViewController.m file do nothing, because it is an index of the same page. But it be correct work for other pages.
  CGPoint offset = CGPointMake(currentPage * parent.scrollView.frame.size.width, 0);
  [parent.scrollView setContentOffset:offset animated:YES];

注意:这只是可行的代码变体之一。但可能还有其他人。

【讨论】:

非常感谢鲁斯兰

以上是关于使用按钮将 childViewController 加载到滚动视图父级的主要内容,如果未能解决你的问题,请参考以下文章

将 ChildViewController 添加到 UIAlertController

从 ChildViewController 呈现 ModalView

自动将事件从 ChildViewController 传递到 parentViewController

UIKit Dynamics - 从 ChildViewController 引用 UIDynamicAnimator 的问题

导航栏未显示在 childViewController 内

如何在全屏 ChildViewController 上显示 UIPageControl?