为presentViewController设置委托(例如不使用segues)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为presentViewController设置委托(例如不使用segues)相关的知识,希望对你有一定的参考价值。

我正试图从presentedViewControllerpresentingViewController设置代表。由于我没有使用segues来访问目标ViewController,因此我很难设置目标ViewController的委托。

我希望声明需要在这里发生:

if inspiredActionChosen == "plan" {

        let viewController = storyboard.instantiateViewController(withIdentifier: "planMealNC")


        delegate?.passInspiredRecipeKey(sender: self, inspiredRecipeKey: "-L0ijpon2MDXxPmmw63M")
        print("PASSING")
        self.present(viewController, animated: true, completion: nil)

presentedViewController没有会员代表。除了使用segues之外,还有其他选择吗?

答案

我对你的问题感到困惑。你想要做的就是将代表传递给前视图控制器,下面的标准做法不起作用?

class PlanMealViewController: UIViewController {

    var presentingDelegate: ThePresentingViewController?

}

class ThePresentingViewController: UIViewController {

    func presentViewController() {

        let viewController = storyboard.instantiateViewController(withIdentifier: "planMealNC")
        viewController.presentingDelegate = self
        present(viewController, animated: true, completion: nil)

    }

}
另一答案

您必须声明委托功能

 protocol presentingProtocol{

  func passInspiredRecipeKey(sender:UIViewController,inspiredRecipeKey:String)

}

带有为协议声明的变量的prsesenting类

class PresentingViewController: UIViewController {

 var presentingDelegate: presentingProtocol?

 }

上课

class presentedViewController: UIViewController {

func presentViewController() {

    let controller = storyboard.instantiateViewController(withIdentifier: "planMealNC") as! PresentingViewController
    controller.presentingDelegate = self
    present(controller, animated: true, completion: nil)

}

}
另一答案

不确定这是否有帮助,找到此链接。不是通过代表,而是添加IBAction在没有segues的故事板之间移动:https://medium.com/@stasost/xcode-a-better-way-to-deal-with-storyboards-8b6a8b504c06

以上是关于为presentViewController设置委托(例如不使用segues)的主要内容,如果未能解决你的问题,请参考以下文章

ios7 presentviewcontroller 无法设置框架

presentViewController 显示在 UIWindow 后面

UIImageView 在顶部使用 presentViewController 时被调整大小

presentViewController 没有按我的意愿工作

iOS 13 presentViewController

卡住!只能为presentviewcontroller传递数据,不能pushviewcontroller