【问题标题】:How can I use swift Viewcontroller through write coding to open the objective-c Viewcontrollerv page?如何通过编写代码使用swift Viewcontroller打开objective-c Viewcontrollerv页面?
【发布时间】:2021-08-21 04:02:32
【问题描述】:

如下所示的错误日志

2021-06-03 09:59:16.251029+0800 testing2[7167:2095191] [Storyboard] Unknown class _TtC8testing218NextViewController in Interface Builder file. Could not cast value of type 'UIViewController' (0x1d8c46428) to 'NextViewController' (0x102a90c50). 2021-06-03 09:59:16.252513+0800 testing2[7167:2095191] Could not cast value of type 'UIViewController' (0x1d8c46428) to 'NextViewController' (0x102a90c50). (lldb)

我的演示详细信息有一个链接 https://drive.google.com/file/d/1LcY3hb3yGYf_3bZpo6qnvZPMviVp2Jft/view?usp=sharing

我是菜鸟,请详细说一下步骤~谢谢

【问题讨论】:

    标签: ios swift objective-c iphone xcode


    【解决方案1】:

    解决方案 1

    没有navigationController,你不能使用pushViewController
    如果您希望您的代码可以工作,您需要将navigationController 添加到您ViewController
    点击您的ViewController -> 在上方菜单中选择Editor -> 选择Embed In -> Navigation Controller

    解决方案 2

    Show 添加到您的 NextViewController

    然后重命名为nextSegue,将种类更改为Present Modally,并将演示设置为Full Screen

    在你的ViewController:

    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
        }
    
        @IBAction func btn_next(_ sender: UIButton) {
            performSegue(withIdentifier: "nextSegue", sender: nil)
        }
        
    
    }
    

    【讨论】:

    • @user16104694,你清理了Module 字段吗?
    • 是的,当我清理模块时,打印日志可以运行(显示“点击成功”),我的意思是当按钮点击时,不要进入 NextViewcontroller 页面...
    • @user16104694,你能把你的项目发过来吗?
    • 可以,可以打开项目drive.google.com/file/d/1GAw4uZfDq5-rvL4syI_zq3bZJ5K4QxHf/…>
    • @user16104694,我编辑了我的答案,请检查
    【解决方案2】:

    Swift 类名以模块名作为前缀,确保您的 ViewControllerNextViewController 都勾选 Inherit Module From Target with same module name in storyboard,给 NextViewController 一个标识符调用 next,你可以执行以下代码。

    @IBAction func btn_next(_ sender: UIButton) {
        
        guard let next = self.storyboard?.instantiateViewController(identifier: "next") as? NextViewController else {
            print("next is uninitialized")
            return
        }
        self.present(next, animated: true, completion: nil)
    }
    

    【讨论】:

    • 日志是 2021-06-03 12:02:44.736518+0800 testing2[8089:2165952] [Storyboard] Interface Builder 文件中的未知类 _TtC8testing218NextViewController。 next 未初始化
    • 我检查了你的项目,你没有在故事板中为NextViewController打勾Inherit Module From Target
    • 当我在 stroyboad 中单击勾号时,错误::47.187595+0800 testing2[8630:2211289] [故事板] Interface Builder 文件中的未知类 _TtC8testing218NextViewController。无法将“UIViewController”(0x1d8c46428)类型的值转换为“NextViewController”(0x100aa0c50)。 2021-06-03 14:16:47.189495+0800 testing2[8630:2211289] 无法将“UIViewController”(0x1d8c46428)类型的值转换为“NextViewController”(0x100aa0c50)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2016-02-16
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    相关资源
    最近更新 更多