从父类访问变量
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.")
【讨论】:
以上是关于从父类访问变量的主要内容,如果未能解决你的问题,请参考以下文章