Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Xcode:didTransition到Won';无法在iMessage扩展中运行_Swift_Xcode_Imessage_Imessage Extension_Msmessage - Fatal编程技术网

Swift Xcode:didTransition到Won';无法在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

我正在制作一个iMessage扩展,它使用
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嵌入导航控制器时不会运行。但我找不到任何方法来解决这个问题,也找不到任何可能发生这种情况的原因。