class DocumentNavigationController: UINavigationController {
public var documentSplitViewController: DocumentSplitViewController? {
return splitViewController as? DocumentSplitViewController
}
}
在也实现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)")
...
}
输出:
Before: Split- <PDF_Express.DocumentSplitViewController: 0x7fcf9050fc60> DocSplit- nil
Cast successful
After: Split- <PDF_Express.DocumentSplitViewController: 0x7fcf9050fc60> DocSplit- nil
我的预期结果是DocSplit在print语句中不为零。我不明白为什么该函数无法正确转换,但是我的本地可选绑定是。
答案 0 :(得分:1)
在primaryViewController
中,所指的splitViewController
是传递到方法中的那个,其中documentSplitViewController
指的是类的属性。我猜他们实际上不是一回事。