【问题标题】:How to show View Controller from Framework(SDK) in Swift?如何在 Swift 中显示来自框架(SDK)的视图控制器?
【发布时间】:2017-09-15 09:06:45
【问题描述】:

我有自己在 Objective C 中生成的框架 (SDK)。它在我的 Swift iOS 项目中使用。我想通过单击 Button(位于 App Controller 中)从我的 SDK 调用我的初始控制器 CCInitViewController(参见第一张图片)(参见第二张图片)。

那么想要对我的代码进行哪些更改?或者我必须在我的 SDK 的 .m 文件中编写的任何方法,然后在我的项目中调用它。

第一张图片:

第二张图片:

我尝试了以下代码:

@IBAction func payClicked(_ sender: Any)
{
    let cont = CCInitViewController(position: self)
    self.present(cont!, animated: true, completion: nil)
}

它会打开我的控制器(CCInitViewController),但没有任何内部内容(如文本字段和下一步按钮)显示为空白。

【问题讨论】:

  • 您想从 SKD 打开应用程序的视图还是我误解了?
  • @Ivan NO,我的 SDK 包含 3 个视图,我想在其中打开我的 SDK From 应用程序的初始视图,它正在使用我的 SDK。
  • 自从吸引了答案以来,这个问题的主题似乎发生了重大变化。请不要那样做。相反,请提出一个新问题(比您最近的问题更详细!)。
  • 我已将其退回到收到答案时的问题,并添加了一张丢失的图片。
  • @MayurShinde 你找到解决方案了吗?

标签: ios objective-c swift sdk frameworks


【解决方案1】:

在我制作 SDK 的所有时间里,我都有一个 Main 类,它通常与 Framework 同名,它有一个 start 方法可以打开 Framework 的第一个视图(就像你在你的应用程序)

【讨论】:

  • @Iven 没错,我想要打开我的框架的第一个视图的启动方法。然后我可以从父应用程序调用它来打开我的框架。你能帮忙吗
【解决方案2】:

您可以在用户初始化您的框架主类时使用 UIViewController,您可以将该视图控制器保留在您的应用程序中,以在该用户的视图控制器上显示您的框架控制器。我曾经这样做过,甚至在 mopub 中也这样做过。

/// user side code should look like this

let frameWork = MyFramework(controller: self)

/// your framework should look like this.

    class MyFramework {
        
         var rootController: UIViewController?
    
         init(controller: UIViewController) {
               self.rootController = controller
         }
    
         func showController() {
             self.rootController?.present(myFrameworkController, true, nil)
         }
    }

希望你明白我的意思。

【讨论】:

  • 我知道了,但你能在 Objective C 中给我同样的吗?因为我的 SDK 代码在 Objective C 中。
【解决方案3】:

Xcode 13、Swift 5.5 和 iOS 15 中。

您在框架 SDKStoryboard 中的故事板和您在该故事板中的 vc 名称 HelloLogger

//Workign fine
if let urlString = Bundle.main.path(forResource: "BlazeTuyaSDK", ofType: "framework", inDirectory: "Frameworks") {
   let bundle = (Bundle(url: NSURL(fileURLWithPath: urlString) as URL))
   let sb = UIStoryboard(name: "SDKStoryboard", bundle: bundle)
   let vc = sb.instantiateViewController(withIdentifier: "HelloLogger")
   self.show(vc, sender: nil)
}

如果你想要另一种风格How to present a view controller from an external framework in swift?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2014-10-20
    相关资源
    最近更新 更多