[英]Xcode: didTransition to Won't Run in iMessage Extension
我正在制作一個使用didTransition(to:)
的 iMessage 擴展。 但是,當我在模擬器中調整 iMessage 擴展的大小時,function 不會運行。 難道我做錯了什么?
這是我的代碼:
import UIKit
import Messages
class EditorViewController: MSMessagesAppViewController {
@IBOutlet weak var input: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
input.text = "not changed"
}
// This part isn't working:
override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
input.text = "changed"
}
}
當我在模擬器中調整它的大小時,什么也沒有發生。 input.text
會更改viewDidLoad()
function 中的UITextView
的文本,但不會didTransition(to)
function 中的文本,因為它從不運行。
難道我做錯了什么?
EditorViewController
是由show (eg Push)
segue 呈現的視圖 controller,並附有NavigationController
。
我怎樣才能解決這個問題?
編輯:當 View Controller 嵌入到導航 Controller 中時, willTransition
和didTransition
函數不會運行。 有沒有辦法來解決這個問題? (它可以在沒有導航 Controller 的情況下工作,但我需要該項目的導航 Controller)。
正如在這個答案中指出的那樣,iMessage App 的入口點必須是 MSMessagesAppViewController 的子類,因此您不能直接將 NavigationViewController 用作根 controller,直到 Apple 添加對此行為的支持。
但正如建議的那樣,您可以通過以下解決方法解決此問題:
import UIKit
import Messages
class MyRootVC: MSMessagesAppViewController {
var navVC: UINavigationViewController!
var editorVC: EditorViewController!
func viewDidLoad() {
super.viewDidLoad()
editorVC = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController() as! EditorViewController
navVC = UINavigationController(rootViewController: editorVC)
self.addChild(navVC)
self.view.addSubview(navVC.view)
navVC.didMove(toParent: self)
}
override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
editorVC.input.text = "changed"
}
}
class EditorViewController: UIViewController {
@IBOutlet weak var input: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
input.text = "not changed"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.