允许按钮在页面视图控制器中触发新的视图控制器 - swift

Posted

技术标签:

【中文标题】允许按钮在页面视图控制器中触发新的视图控制器 - swift【英文标题】:Allow buttons to trigger new view controllers within a page view controller - swift 【发布时间】:2017-06-12 21:07:46 【问题描述】:

目前,在我的应用程序中,我有一个页面视图控制器设置。在页面视图控制器中,有 3 个不同的视图控制器。在三个视图控制器中,有按钮。我希望这些按钮能够触发页面视图控制器向左或向右移动。

到目前为止,我已经尝试在我的页面视图控制器中添加一个公共函数并在另一个视图控制器中调用它,如下所示:

公共职能:

public func nextViewController(vc: UIViewController) 
     HomeRootPageViewController().setViewControllers([vc], direction: .forward, animated: true, completion: nil)


在不同的 vc 中按下按钮时调用的函数:

@IBAction func backButton(_ sender: Any) 
   HomeRootPageViewController().nextViewController(vc: SocialMediaFeedViewController())

当我运行上面的代码时,我收到了这个错误:

UICollectionView: must be initialized with a non-nil layout parameter

基本上,我想知道如何使用按钮来控制 UI 页面浏览控制器的功能。

【问题讨论】:

当你这样做时会发生什么? 我在上面的答案中添加了错误消息。 @Lou Franco 【参考方案1】:

我猜你不应该传入使用默认初始化 (SocialMediaFeedViewController()) 制作的 VC——这是在故事板中吗?

如果是这样,用

构建它
 UIStoryboard(name: "SBName", bundle: nil).instantiateViewController(withIdentifier: "SocialMediaFeedViewController"))

如果没有,请按照您初始化它的方式进行操作,或者如果您仍然有对它的引用,请重新使用它。

【讨论】:

我会这样做,但它没有给我想要的动画,因为它在页面视图控制器中 我给你的代码可以用来实例化 VC 并以你想要的方式呈现它。

以上是关于允许按钮在页面视图控制器中触发新的视图控制器 - swift的主要内容,如果未能解决你的问题,请参考以下文章

通过在父级上呈现新的视图控制器 viewWillDisappear 在我取消订阅事件时触发

所有视图上的页面视图控制器按钮

Swift 3 在页面视图控制器中嵌入按钮

加载特定视图控制器后立即运行代码

在其中一个控制器中按下按钮时更改页面视图控制器中的视图

标题中的按钮用于推送新的视图控制器