在Messages框架应用(iOS 10 beta 8)中,我可以使用以下方式访问Messages扩展程序中的activeConversation
:
guard let conversation = activeConversation else {
print("unable to create activeConversation")
return
}
这适用于compact
演示文稿样式(首次加载时)和expanded
演示文稿样式(始终)。
从compact
转换为expanded
,然后再转为compact
后,activeConversation
始终为nil
。
(请注意,在activeConversation
演示文稿样式中,expanded
从不为零。)
在MessagesViewController.swift
中,我正在使用此代码切换视图控制器:
extension MessagesViewController {
func switchTo(viewController controller: UIViewController) {
// Remove existing child view controller
for child in childViewControllers {
child.willMove(toParentViewController: .none)
child.view.removeFromSuperview()
child.removeFromParentViewController()
}
addChildViewController(controller)
controller.view.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(controller.view)
NSLayoutConstraint.activate([
controller.view.leftAnchor.constraint(equalTo: view.leftAnchor),
controller.view.rightAnchor.constraint(equalTo: view.rightAnchor),
controller.view.topAnchor.constraint(equalTo:
topLayoutGuide.bottomAnchor),
controller.view.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])
controller.didMove(toParentViewController: self)
}
}
在switchTo(controller:)
覆盖:
willTransitionTo(presentationStyle:)
辅助方法
override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
super.willTransition(to: presentationStyle)
if presentationStyle == .expanded {
guard let controller = storyboard?.instantiateViewController(withIdentifier: "expandedVC") as? ExpandedViewController
else {
fatalError("Unable to instantiate expandedVC")
}
controller.delegate = self
switchTo(viewController: controller)
}
else { // .compact
guard let controller = storyboard?.instantiateViewController(withIdentifier: "messagesViewController") as? MessagesViewController
else {
fatalError("Unable to instantiate an MessagesViewController")
}
switchTo(viewController: controller)
}
}
查看层次结构问题?
我检查了Xcode中的视图层次结构工具,我没有发现任何突出的问题(尽管因为它是一个新工具,我可能会错误地阅读它)。我似乎也没有任何内存泄漏。
测试版中的错误?
其他人是否有问题可靠地访问activeConversation
?如果是这样,也许这只是测试版中的一个错误。