在swift 3

时间:2017-07-17 10:48:22

标签: ios swift uisplitviewcontroller master-detail

我在主细节视图控制器的详细视图控制器中呈现视图控制器时遇到一些问题。有可能吗?

当用户点击细节视图控制器上的按钮时,我想呈现一个视图控制器,就像细节视图控制器一样,尽管它不是。

如果有可能的话请帮助我。如果没有,那么请指导我做一些事情。

5 个答案:

答案 0 :(得分:0)

这是可能的,但您的详细信息VC必须是导航控制器,因此您可以呈现。

答案 1 :(得分:0)

在窗口顶部显示视图控制器 vc

 let window =  ((UIApplication.shared.delegate?.window)!)!
 window.rootViewController?.present(vc, animated: true, completion: nil)

答案 2 :(得分:0)

试试这个:

class func presentViewCoontroller(vc : UIViewController) -> Void{
        let viewController : UIViewController = ((UIApplication.shared.delegate as! AppDelegate).window?.rootViewController)!
        if (viewController.presentedViewController != nil)  {
            viewController.presentedViewController?.present(vc, animated: true, completion: nil)
        }
        else{
            viewController.present(vc, animated: true, completion: nil)
        }
    }

<强>调用

self.presentViewCoontroller(vc: yourcontroller)

答案 3 :(得分:0)

创建主视图控制器的静态实例,然后尝试使用该引用呈现新的视图控制器。

class MasterViewController : UIViewController{
static var masterVC : UIViewController?
      override func viewDidLoad() {
        super.viewDidLoad()
       MasterViewController.masterVC = self
      }
}


class DetailViewController : UIViewController{

          override func viewDidLoad() {
            super.viewDidLoad()
          }

          @IBAction func didTapButton(_ sender: UIButton) {
              MasterViewController.masterVC?.present(<newViewController>, animated: true, completion: nil)
          }
}

答案 4 :(得分:0)

您可以在Storyboard中尝试,例如

在故事板中,选择Segue as present modally,然后转到Identity Inspector,并为Presentation选项选择Current Context。

希望它有所帮助。