Swift 从按钮内部、弹出框和单元格以编程方式在地图顶部打开一个新的视图控制器

Posted

技术标签:

【中文标题】Swift 从按钮内部、弹出框和单元格以编程方式在地图顶部打开一个新的视图控制器【英文标题】:Swift open a new view controller programmatically on top of a map from a button insider a popover and a cell 【发布时间】: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) 指向自身!!!! 【参考方案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 在问题中,而不是在实际代码中 =)

以上是关于Swift 从按钮内部、弹出框和单元格以编程方式在地图顶部打开一个新的视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

将弹出框添加到以编程方式添加的 UIBarButtonItem 并将图像添加到相同的弹出框 Swift

如何在 iPhone 上以编程方式在 Swift 中将 UIViewController 呈现为弹出框

UIPopoverController 以不同的速度调整弹出框和内容视图控制器(uinavigationcontroller)的大小

iOS:从现有单元格以编程方式创建表“标题”

离子应用程序在弹出框和模式关闭后冻结或停止工作

在 Swift 中点击按钮时显示一个弹出框