ios - 如何使用 swift 将 UIVIewController 名称作为参数传递给特定函数?

标签 ios swift

在我的场景中,我需要将 UIVIewController 名称和更多字符串值传递给特定的函数。我尝试了下面的代码但没有得到结果。

将参数传递给特定函数

self.accountoptionscall(vcName: UIViewController(), vcIdentifier: "profileviewcontroller", popUpVC: ProfileViewController.self)

func accountoptionscall<T: UIViewController>(vcName: UIViewController,vcIdentifier: String, popUpVC: T.self) {
            let viewcontrollers = self.storyboard!.instantiateViewController(withIdentifier: vcIdentifier) as! vcName
        let navController = UINavigationController(rootViewController: viewcontrollers)
        self.present(navController, animated:true, completion: nil)
    }

最佳答案

我在我的应用程序中使用它,我认为它可以帮助你。

extension UIViewController {

  /// Load UIViewController type from UIStoryboard
  class func loadFromStoryboard<T: UIViewController>() -> T {
    let name = String(describing: T.self)
    let storybord = UIStoryboard(name: name, bundle: nil)
    if let viewController = storybord.instantiateInitialViewController() as? T {
      return viewController
    } else {
      fatalError("Error:  No initial view controller in \(name) storyboard!")
    }
  }
}

这里是如何使用它:

  func loadVC<T: UIViewController>(controller: T) {
    let vc: T = T.loadFromStoryboard()
    let navigationVC = UINavigationController(rootViewController: vc)
    self.present(navController, animated:true, completion: nil)
    // or if use in appDelegate you can do it: window?.rootViewController = navigationVC
  }

关于ios - 如何使用 swift 将 UIVIewController 名称作为参数传递给特定函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59115827/

相关文章:

ios - 完成处理程序?异步调度?

ios - 试图在释放时加载 View Controller 的 View ... UISearchController

swift - UILabel PreferredMaxLayout 破坏自调整单元格大小

ios - 解析 - imageView 作为 PFFile 不会加载

ios - 我可以将 Apple 的 TestFlight 与 Xcode 5 一起使用吗?

ios - 我可以在 Web API 请求中使用 iOS SDK 中的 token 吗?

ios - UI相关初始化代码UITableViewCell with Storyboard的最佳位置

objective-c - 在 OS X 上获取活跃的网络连接

ios - 我在哪里可以查看大型 iOS 代码库以了解其组织方式?

ios - 通过自动布局添加分隔线