从superview

时间:2017-03-20 18:35:47

标签: ios swift3

所以我有一个应用程序,你应该从地图中选择一个位置,但我这样做的方式是通过一个视图控制器的弹出窗口,它有一个MapKit,一个搜索栏和一个用于选择用户的按钮位置,问题在于我完成了我通常称之为

的视图
self.view.removeFromSuperview()

但正在删除的东西是View控制器本身,但是il留下了导航栏,它不会让我什么都不做(实际上当我转到另一个选项卡并返回到同一个VC返回时) )。

我实例化VC的方式是这样的:

func location ()
{
            let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

            let vc = mainStoryboard.instantiateViewController(withIdentifier: "mapV") as! UBICACIONViewController

            let nav1 = UINavigationController()
            nav1.viewControllers = [vc]

            self.addChildViewController(nav1)


            self.view.addSubview(nav1.view)

            vc.delegate = self //this for the info that i'm getting afte(works fine)

            nav1.didMove(toParentViewController: self)
}

所以,直到这里工作,但当用户选择“使用我的位置”的te按钮并尝试返回时出现问题。

在我的VC视图控制器中,这就是完成后会发生的事情:

func Remove()
{
        if let del = delegate {
            del.dataChanged(str: Event.sharedInstance.Location!)
        }

        self.view.removeFromSuperview() //Problem Here :/
}

Second VC

Return to First VC

1 个答案:

答案 0 :(得分:0)

实际上你添加了一个子视图控制器nav1。 nav1有一个子视图nav1.view。 删除时,您将从其超级视图中删除此视图,而不是添加子视图控制器。

任何方式,从你的屏幕短...我明白弹出视图是全屏幕,然后为什么不以模态方式呈现此VC,或者将其推送到导航堆栈。