首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SwiftUI返回到带有SwiftUI按钮的Storyboard

从SwiftUI返回到带有SwiftUI按钮的Storyboard
EN

Stack Overflow用户
提问于 2022-04-13 13:33:34
回答 1查看 471关注 0票数 1

为了将SwiftUI视图和Storyboard合并,我已经从故事板创建了一个segue到一个SwiftUI视图,但目前无法返回。

我不想通过导航栏来实现这一点,而是在我的SwiftUI视图中的一个按钮,该按钮将segue解压回main.storyboard视图。

到目前为止,我实现结果的方式是使用SwiftUI视图作为托管控制器,然后从添加一个segue到子主机控制器。

我想解开的按钮如下所示:

代码语言:javascript
复制
Button(action: {
    print("button pressed") // UNWIND SEGUE HERE

  }) {
      Image("TopLeft")
      .renderingMode(.original)
      .resizable()
      .scaledToFit()
      .frame(width: 15, height: 15)
  }
}

此代码链接到一个名为SecondView的类,即SwiftUI代码。SecondView由子类ChildHostingController激活,该子类链接到故事板上的UIHostingController:

代码语言:javascript
复制
class ChildHostingController: UIHostingController<SecondView> {

    required init?(coder: NSCoder) {
        super.init(coder: coder,rootView: SecondView());
    }

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

是否有任何可能的方法来解除这个海格回到视图控制器?

非常感谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-13 15:25:08

一种可能的方法是通过视图模型将带有从视图控制器展开操作的闭包注入到SwiftUI视图中,并在SwiftUI视图按钮中调用它。

以下是主要部分:

代码语言:javascript
复制
super.init(coder: coder, rootView: SecondView(vm: viewModel))
viewModel.unwind = { [weak self] in
   // call unwind segue created in storyboard
    self?.performSegue(withIdentifier: "unwind_segue_identifier", sender: self)
}

完全这里的发现和代码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71858403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档