Swift Xcode:didTransition到Won';无法在iMessage扩展中运行
我正在制作一个iMessage扩展,它使用Swift Xcode:didTransition到Won';无法在iMessage扩展中运行,swift,xcode,imessage,imessage-extension,msmessage,Swift,Xcode,Imessage,Imessage Extension,Msmessage,我正在制作一个iMessage扩展,它使用didtransformation(to:)。但是,当我在模拟器中调整iMessage扩展时,该函数将不会运行。我做错什么了吗 这是我的代码: import UIKit import Messages class EditorViewController: MSMessagesAppViewController { @IBOutlet weak var input: UITextView! override func viewDidL
didtransformation(to:)
。但是,当我在模拟器中调整iMessage扩展时,该函数将不会运行。我做错什么了吗
这是我的代码:
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()
函数中更改UITextView
的文本,但在didtransfition(to)
函数中不更改,因为它从不运行
我做错什么了吗
EditorViewController
是由show(如Push)
segue显示的视图控制器,并附带了一个NavigationController
这是一张没有变化的gif:输入的文本永远不会更改 我怎样才能解决这个问题 编辑:视图控制器嵌入导航控制器时,
willTransition
和didtranition
功能不运行。有办法解决这个问题吗?(它可以在没有导航控制器的情况下工作,但我需要这个项目的导航控制器)。正如本文所指出的,iMessage应用程序的入口点必须是MSMessageAppViewController的子类,因此在Apple添加对该行为的支持之前,不能将NavigationViewController直接用作根控制器
但正如建议的那样,您可以通过以下解决方法来解决此问题:
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"
}
}
尝试使用print并告诉我们当您print@Evergreen我试过这个,但当我调整它的大小时,什么也没有打印出来。这是一个困境!尝试使用
willTransition()
,如果不起作用,请尝试在viewdiload()
中使用self.presentationStyle
,查看它是否更改,如果更改,请调用一个新函数,该函数可以执行任何您想要的操作。@Evergreen我尝试了willTransition()
,它也不会运行。您是否认为这可能是因为它不是主视图控制器,而是使用带有performsgue
功能的show
序列来显示的?编辑:我创建了一个空白的Xcode项目,它似乎在那个项目中工作。Idk为什么它不会在另一个项目中运行。@我创建了一个新项目,并意识到由于某种原因,willTransition和
didTransition`函数在ViewController嵌入导航控制器时不会运行。但我找不到任何方法来解决这个问题,也找不到任何可能发生这种情况的原因。