gpt4 book ai didi

ios - 如何从另一个 Controller 加载 xib 文件而不使用 segue 并且不作为 subview

转载 作者:行者123 更新时间:2023-11-30 13:33:02 26 4
gpt4 key购买 nike

在我的项目中,我有一个:

  • 主 Storyboard
  • 一个 Controller “MapViewController”和他的 xib 文件
  • Controller “ViewMapViewController”及其 xib 文件

我想做的是从 MapViewController 中的 ViewMapViewController 调用 xib 文件,但不是作为 subview ,请问这可能吗?

我尝试做这样的事情:

let viewMapViewController:ViewMapViewController = ViewMapViewController()
self.presentViewController(viewMapViewController, animated: true, completion: nil)

它调用了它,但有一个黑色的背景,我不知道为什么。起初我以为是因为背景颜色的原因,但事实并非如此,我查了一下。

这是我的文件:

class MapViewController: UIViewController, GIDSignInUIDelegate {

@IBOutlet weak var gmapView: GMSMapView!
var viewMapViewController: ViewMapViewController!

override func viewDidLoad() {
super.viewDidLoad()

let camera = GMSCameraPosition.cameraWithLatitude(-33.86, longitude: 151.20, zoom: 15)
let mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera)
mapView.setMinZoom(10, maxZoom: 15)
mapView.myLocationEnabled = true
self.view = mapView

let marker = GMSMarker()
marker.position = CLLocationCoordinate2DMake(-33.86, 151.20)
marker.map = mapView
}

override func viewDidAppear(animated: Bool) {
let viewMapViewController:ViewMapViewController = ViewMapViewController()
self.presentViewController(viewMapViewController, animated: true, completion: nil)
}

这是我的另一个文件:

class ViewMapViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

最佳答案

您应该从 xib 文件加载 Controller ,因为它们的 socket 都在 xib 文件中设置,如果您动态创建这些 Controller 的实例,您会得到一个空的 vew,如您所见,因此 swift 中的正确方法是:

let vc = ViewMapViewController (nibName: "nibName", bundle: nil)

您还可以将 View Controller 放在主 Storyboard中,并为每个 Storyboard提供一个 Storyboard标识符,然后从 Storyboard加载它们:

let storyBoard = NSStoryboard(name: "Main", bundle: nil) as NSStoryboard
let vc= storyBoard.instantiateControllerWithIdentifier("YourVCIdentifier") as! NSViewController

关于ios - 如何从另一个 Controller 加载 xib 文件而不使用 segue 并且不作为 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36373659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com