【问题标题】:Swift open a new view controller programmatically on top of a map from a button insider a popover and a cellSwift 从按钮内部、弹出框和单元格以编程方式在地图顶部打开一个新的视图控制器
【发布时间】:2015-07-26 07:42:58
【问题描述】:

我有一个奇怪的问题。请注意,一切都是以编程方式完成的,所以请不要有故事板建议。这是设置:

我有一个 Master-Detail 视图布局,其中 Detail 视图是一张地图。 Master-view 的表格充满了代表地图上注释点的单元格。当您点击一个单元格时,它会专注于地图上的该注释并使用弹出框打开自定义注释视图。同样,当您点击注释本身时,会打开相同的弹出框。到目前为止,一切顺利。

现在,在弹出框内和每个单元格内都有一个按钮,当按下该按钮时,应该会打开一个新视图填满整个屏幕。该视图将具有特定于其相应注释的信息。

这是我的尝试:

具有地图的类 (MyDetailViewController)

public func openNewViewController(){
    self.presentViewController(NewViewController(), animated: true, completion: nil)
}

单元格按钮和弹出按钮的函数调用

func btnPressed(sender: AnyObject){
    var dvc = MyDetailViewController()
    dvc.openNewViewController()
}

当任何一个按钮被点击时,我都会收到同样的错误:

警告:尝试在视图不在窗口层次结构中的DetailViewController 上呈现NewViewController!

那么,这是什么意思 DetailViewController 不在窗口层次结构中..?应该是我看到了吧?

知道如何解决此问题?提前致谢!

【问题讨论】:

  • 你的函数 openNewViewController() 什么也没做!只看代码..... self.presentViewController(openNewViewController()) ,动画:true ,完成:nil) 指向自身!!!!

标签: swift uiviewcontroller mkmapview popover presentviewcontroller


【解决方案1】:

您的函数 openNewViewController() 什么也没做!
看代码

self.presentViewController(openNewViewController()) , animated : true , completion: nil)

指向自己。

试试这个:

public func openNewViewController(){
    var newController = UIViewController() // or any other view you wish to instantiate
    self.presentViewController(newController, animated: true, completion: nil)
}

【讨论】:

  • 嗨,Sriram,感谢您的回答,但那是一种类型。很好,但我打算写self.presentViewController(NewViewController()...)。我编辑了我的问题
  • 还是一样的错误; type-o 在问题中,而不是在实际代码中 =)
猜你喜欢
  • 2016-08-19
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
相关资源
最近更新 更多