繁体   English   中英

在Swift / XCode 8中从子视图更改父视图?

[英]Change View in parent from child in Swift/XCode 8?

我想创建一个注册/注册序列。 为此,我尝试使用带有标题,进度条和页面视图的场景。 在该页面视图中,注册序列和入职流程的每个部分都会有多个场景。 用户将能够在它们之间滑动,它将更新进度条,显示它们离终点有多近。

如何从具有“创建帐户”标题的区域的视图控制器从子级(RegistrationPageViewController)访问进度栏?

在此处输入图片说明

在此处输入图片说明

最好的方法是实现UIContainerView 它将作为子视图控制器自动添加到您的父UIViewController中。 ContainerView可以使用self.childViewControllers访问。

for each in self.childViewControllers
{
    if let containerView = each as? <YourContainerView_ViewControllerClass>
    {
         //manage containerView objects here
    }
}

也可以重用此UIContainerView。

一种更好的处理方法是使用委托,因为子视图控制器无权访问父视图。

class ParentViewController: UIViewController {
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "pageViewController" {
            let dest = segue.destination as? UIPageViewController
            dest?.delegate = self
        }
    }
}

extension ParentViewController: UIPageViewControllerDelegate {
    func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
        //set progress bar by analyzing pageViewController.viewControllers to see which page you're on.
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM