Reputation: 2697
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.
Upvotes: 0
Views: 65
Reputation: 4721
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.
Upvotes: 1