class DocumentNavigationController: UINavigationController {
public var documentSplitViewController: DocumentSplitViewController? {
return splitViewController as? DocumentSplitViewController
}
}
Accessing it in a subclass that also implements UISplitViewControllerDelegate.
func primaryViewController(forExpanding splitViewController: UISplitViewController) -> UIViewController? {
...
print("Before: Split- \(splitViewController) DocSplit- \(documentSplitViewController)")
if let docSplit = splitViewController as? DocumentSplitViewController {
print("Cast successful")
} else { print("Cast failed")}
print("After: Split- \(splitViewController) DocSplit- \(documentSplitViewController)")
...
}
Output:
Before: Split- <PDF_Express.DocumentSplitViewController: 0x7fcf9050fc60> DocSplit- nil
Cast successful
After: Split- <PDF_Express.DocumentSplitViewController: 0x7fcf9050fc60> DocSplit- nil
My expected results would be that DocSplit is not nil in the print statements. I don't understand why the function is not properly casting, but my local optional binding is.
In primaryViewController
the splitViewController
referred to is the one passed into the method where as the documentSplitViewController
refers to the property of the class. I would guess they are not actually the same thing.