这是错误还是我错过了什么? (铸造UISplitViewController)

时间:2019-07-13 18:28:37

标签: ios swift uisplitviewcontroller

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语句中不为零。我不明白为什么该函数无法正确转换,但是我的本地可选绑定是。

1 个答案:

答案 0 :(得分:1)

primaryViewController中,所指的splitViewController是传递到方法中的那个,其中documentSplitViewController指的是类的属性。我猜他们实际上不是一回事。