从父类访问变量

Posted

技术标签:

【中文标题】从父类访问变量【英文标题】:Accessing variables from Parent Class 【发布时间】:2015-07-29 14:02:01 【问题描述】:

我正在使用UIPageViewController

My Class - ViewController(包含所有代码并且是数据源)运行 PageItemController 的实例。

我的 UIPageControl (pControl) 显示在 ViewController 的导航栏中。

我想要下面的代码:

PageItemController

override func viewDidAppear()

    let vController = the parent view controller // ViewController
    vController.pControl.currentPage = itemIndex


这是如何实现的?

【问题讨论】:

【参考方案1】:

在您的视图控制器上使用parentViewController 属性:

if let parentVC = self.parentViewController as? MyParentViewController 
    itemIndex = parentVC.pControl // set variable here

【讨论】:

在我的情况下我会说if let parentVC = self.parentViewController as? ViewController 吗?这是因为我在ViewController 中创建了PageItemController 的实例吗? .. 上面的代码为我返回 false【参考方案2】:

这有帮助吗?

    // Get the Navigation Controller
    let navControl = self.navigationController

    // Get all the pages in the hierarchy
    let allPages = navControl!.viewControllers

    // Get the current page
    let thisPageViewController = navControl!.visibleViewController

    // Work out which is the current page.
    // I'm sure someone else will have a more elgant way of doing this.
    let arrayOfPages : NSArray = NSArray(array: allPages)
    let thisPageIndex = arrayOfPages.indexOfObject(thisPageViewController)

    // Now get the parent and set a value in it.
    if thisPageIndex > 0 
        let parentPageIndex = thisPageIndex - 1
        let parentView: AnyObject = arrayOfPages[parentPageIndex]
        parentView.pControl.currentPage = thisPageIndex
     else 
        println("We are at the top and had to stop.")
    

【讨论】:

以上是关于从父类访问变量的主要内容,如果未能解决你的问题,请参考以下文章

子类从父类继承过来的方法可以操作子类自己定义的成员变量吗

Angular2从另一个类访问函数/变量

无法查看从父类继承的属性 [重复]

访问父类中的子类变量

Java基础 成员变量的继承与覆盖

4.8 继承与组合