这是一个错误还是我遗漏了什么? (铸造 UISplitViewController)
Is this a bug or am I missing something? (Casting 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 不是 nil。我不明白为什么函数没有正确转换,但我的本地可选绑定是。
在 primaryViewController
中,所指的 splitViewController
是传递给方法的那个,而 documentSplitViewController
指的是 class 的 属性。我猜他们实际上不是一回事。
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 不是 nil。我不明白为什么函数没有正确转换,但我的本地可选绑定是。
在 primaryViewController
中,所指的 splitViewController
是传递给方法的那个,而 documentSplitViewController
指的是 class 的 属性。我猜他们实际上不是一回事。