从 UIPageViewController 的根视图控制器执行 Segue

Posted

技术标签:

【中文标题】从 UIPageViewController 的根视图控制器执行 Segue【英文标题】:Perform Segue from Root View Controller of a UIPageViewController 【发布时间】:2014-09-29 17:31:01 【问题描述】:

我有一个 UIPageViewController 并且里面有一个按钮。每当按下按钮时,我都想从父视图控制器(嵌入了导航控制器)到导航堆栈中的下一个视图控制器执行 Segue。我还希望能够通过 segue 传递数据。我已经尝试了几件事,但我对 ios 开发很陌生,而且根本没有成功。

【问题讨论】:

我发现这个教程很有帮助techotopia.com/index.php/… 这确实是一个有用的教程,但与这里无关。我有页面设置,它运行良好。我只是在 PageViewController 中设置了一个 IBAction,并且需要从父级执行 Segue 以查看何时调用 IBAction。 那么您是否在情节提要中添加了按钮?如果是这样,您不需要 IBAction 方法。只需右键单击按钮并拖动到下一个视图控制器并选择“push”。 如果这确实解决了 segue 问题,那么您的下一个问题就是传递数据。您可以在 UIViewController 方法 -performSegueWithIdentifier 中执行此操作: 该方法的问题是我无法通过 segue 传递数据。最后我需要实现的是,我需要根据按下按钮的页面来更改下一个视图控制器的标题。 【参考方案1】:

您需要在情节提要中选择 segue 并为其提供唯一标识符,然后将其放入下面的代码中。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

if ([segue.identifier isEqualToString:@"YourSegueIdentifier"]) 
    // get a reference to the destination View Controller
    UIViewController *destinationVC = [segue destinationViewController];
    XXYourViewControllerSubclass *yourVC = (XXYourViewControllerSubclass*)destinationVC;
    // create the data and pass it to the view controller
    id someData = // create your data (unless you have a property holding it already)
    [yourVC acceptData:(id)someData]; // make a public method on your VC subclass to accept the data

// after this method has returned the seque will be performed

这有意义吗?

【讨论】:

你能用swift写吗?我无法转换此代码

以上是关于从 UIPageViewController 的根视图控制器执行 Segue的主要内容,如果未能解决你的问题,请参考以下文章

如何为 UIPageViewController Delegate 制作自定义类?

图像的 UIPageViewController 如何在方向改变时保持图像的纵横比?

如何从属于 UIPageViewController 的 UIViewController 之一更改 UIPageViewController?

从 UIPageViewContoller 中包含的视图设置 UINavigationBar 标题

将删除滑动手势从 UIPageViewController 传递给 UITableView

IOS 如何从其子级访问 uipageviewcontroller?