关闭消息视图控制器

时间:2016-11-01 20:39:51

标签: ios swift xcode imessage imessage-extension

我在swift中有一个iMessage扩展,当用户点击按钮时,它在扩展的presentationStlye中。点击此按钮后,它应完全取消视图或至少返回紧凑模式。我不确定是什么问题。这是从我的按钮调用didTransition:

self.didTransition(to: MSMessagesAppPresentationStyle.compact)

和行动:

override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) {

    guard presentationStyle == .expanded else { return }
    self.dismiss(animated: true) {

    }
}

但这不起作用。有谁知道我做错了什么?

3 个答案:

答案 0 :(得分:0)

实际上,调用的正确函数是:

requestPresentationStyle(MSMessagesAppPresentationStyle)

你可以在MSMessageAppViewController

中这样称呼它
self.requestPresentationStyle(.compact)

您不需要覆盖任何内容;)希望这会对您有所帮助!

注意:请查看此处的文档: https://developer.apple.com/reference/messages/msmessagesappviewcontroller

它会对你有所帮助!

答案 1 :(得分:0)

这些函数将有助于在MSMessagesViewController中从一个过渡状态移动到另一个过渡状态: -

requestPresentationStyle(.expanded)    
requestPresentationStyle(.compact)

上面的方法将调用willTransition和didTransition: -

  override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) {

//这里我们可以检查presentationStyle并根据需要移动Controller。即

    let controller: UIViewController
    if presentationStyle == .compact {
        controller = instantiateCompactController()
    }
    else {
        controller = instantiateExpandController()
    }
    //and then Present Controller
    }

更多信息:https://developer.apple.com/videos/play/wwdc2016/224/

答案 2 :(得分:0)

您还可以使用dismiss()函数完全消除展开的MSMessagesAppViewController

请注意,这与dismiss(animated:)不同,后者将退出模态呈现的vc。 Docs here