问题标签 [uiviewcontrollerrepresentable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1461 浏览

ios - 当我的基于 SwiftUI 的应用程序以横向模式启动时,导航栏上的背景颜色未设置

我正在使用一个基于SwiftUI的应用程序,该应用程序依赖于NavigationView从屏幕转换。

我需要在导航栏上设置背景颜色,并且找到了大部分时间都可以使用的代码。

当应用程序以纵向模式启动时,一切都在旋转中正常工作。

但是,当应用程序以横向模式启动时,条形图默认为灰色,并且仅在第一次旋转后更新。

下面,我有最少的代码来重新创建我的问题:

以纵向模式启动时应用程序的显示方式:

在此处输入图像描述

...并旋转到横向...

在此处输入图像描述

最后,以横向模式启动时的外观。

在此处输入图像描述

我还注销了NavigationConfigurator,发现当它以纵向模式启动时,会拨打两个电话。第一个找不到导航控制器,但第二个找到了。

当我以横向模式启动时,只进行了一次调用,但未能找到它。旋转后,它会找到它并成功更新颜色。

我确实尝试通过@State管理强制重绘,但没有成功。

由于没有将应用程序锁定为纵向模式,我已经没有想法了。

0 投票
1 回答
509 浏览

ios - SwiftUI 将操作从页面发送到 PageViewController

我已经在 SwiftUI 中设置了一个PageViewController,遵循已知的 Tutorial Interface with UIKitUIViewControllerRepresentable等。

我的控制器数组由简单的 SwiftUI 视图组成。我通过一个简单的IntroPage结构来提供内容。视图是嵌套的,这是良好的 SwiftUI 实践,因此:

现在我想在这些视图上包含一些按钮。它们应该可以通过我的IntroPage结构进行配置。其中一个前进到 PageViewController 中的下一页,另一个告诉 PageViewController 先添加更多页面,另一个按钮关闭整个 PageViewController。

我不知道如何在 PageViewController 中访问这些方法,在哪里实现它们(实例视图?PageViewController 的协调器?)以及如何访问我需要的对象(例如currentPagePageViewController 的 Binding 变量)。

例如,我forward()在 PageViewController 的协调器中实现了一个函数:

...如果我在最终视图的 PageView 旁边添加一个按钮,它可以很好地使用动画和所有内容。但我仍然无法从子视图中包含的按钮调用它。

有任何想法吗?

编辑:根据要求,这是 ButtonView 中的一种情况。

或者也许我完全错了,仍然从“事件”而不是“声明”的角度思考......

0 投票
1 回答
370 浏览

swift - 如何以编程方式从 SwiftUI 导航堆栈中弹出 UIViewControllerRepresentable

这是我的 SwiftUI 设置:

我有一个 SwiftUI 视图(称为 MapSearchView),它有一个包含 NavigationLink 的 NavigationView。

NavigationLink 的目的地是一个 UIViewControllerRepresentable,它包装了一个 GooglePlacesViewController。当我完成 GooglePlaces 搜索(因为我进行了选择或取消了搜索)时,我想以编程方式弹回 MapSearchView。

我尝试在 UIViewControllerRepresentable (GooglePlacesViewController) 中添加以下内容:

并使用在我的协调器中将 popToPrevious 设置为 true

它确实被调用,但什么也不做。

我也试过在协调员中打电话

view.viewController().navigationController.popViewController(animated: true)

(viewController() 是获取任何视图的 viewController 的扩展)

这也无济于事。

想法?

0 投票
1 回答
1139 浏览

swiftui - 具有 UIViewcontrollerRepresentable 的自定义 UIViewController 具有在 SwiftUI 中调用时崩溃或为零的 UITextView

我做了一个自定义UIViewController调用ViewControllerA并希望能够使用它所以我做了一个如下所示的UIViewControllerRepresentable调用 ,但问题是当我在我的 SwiftUI 视图中调用并传递一个值时,说in是,我是不知道为什么。ViewControllerARepresentableViewControllerARepresentablestringToUpdateTextViewViewControllerAhtmlTextView(UITextView)ViewControllerAnil

ViewControllerARepresentable

视图控制器A

在说 htmlTextView.text 为 nil 时发生崩溃, htmlTextView.text = stringToUpdateTextView即使它是一个 IBOutlet。如果在 viewDidAppear 或 viewDidLoad 中调用,对 htmlTextView 所做的任何更改(如背景颜色等)也会导致崩溃

0 投票
0 回答
161 浏览

ios - 从 UIViewControllerRepresentable 推送 NavigationController

我有一个 SwiftUI 视图,它显示一个 UIViewControllerRepresentable,它包含在 NavigationView 中。我已经完成了所有工作,但现在我希望能够在用户点击单元格时从集合视图推送另一个视图。我面临的问题是协调器无权访问导航控制器。有更好的实现吗?

这是最初的 SwiftUI 视图

这是 collectionView 包装器。正如您在 didSelectItemAt 函数中看到的那样,我试图将视图包装在 HostingController 中。我知道用宿主控制器的根实例化导航控制器然后推送到它没有任何意义。虽然我不知道该怎么做,但如果有任何帮助,我将不胜感激。

0 投票
1 回答
989 浏览

swiftui - 从 UIViewControllerRepresentable 对象访问 @Environment 对象

我使用这种方法将相机与 swiftUI 结合起来: https ://medium.com/@gaspard.rosay/create-a-camera-app-with-swiftui-60876fcb9118

UIViewControllerRepresentable 由 PageFourView 类实现。PageFourView 是父 View 的 TabView 之一。我@EnvironmentObject从 SceneDelegate 传递到父视图,然后传递到 PageFourView。但是当我试图@EnvironmentObject从 PageFourView 的 makeUIViewController 方法访问时,我得到一个错误:

致命错误:未找到数据类型的 ObservableObject。Data 的 View.environmentObject(_:) 作为此视图的祖先可能会丢失

...即使我可以从 context.environment 中看到 @Environment 对象。这是我的代码:

这是从中调用 PageFourView 的父视图:

0 投票
1 回答
747 浏览

ios - SwiftUI 大标题导航栏与 UIViewControllerRepresentable UITableViewController 的兼容性

为了在 SwiftUI 列表中实现向右滑动,我正在尝试使 UIViewControllerRepresentable UITableViewController。
但是,当 displayMode 为 .large 时,它​​与导航栏不兼容。

我想,当滚动移动时,它应该

  1. 调整导航栏的大小。
  2. 调整 Scrollview 或 List 的框架。

#2 不适用于我的表格视图,因此需要做一些事情。我需要你的帮助。

[图片]

在此处输入图像描述

  1. 第一次渲染效果很好。
  2. 滚动后,表格视图上方有多余的空间
  3. 通过点击显示屏顶部滚动到顶部后,位置被破坏。
  4. 滚动后查看层次结构(第一次渲染后修复)

[代码]重现(从xcode创建swiftui项目后,将ContentView.swift的内容替换为下面的代码。)

0 投票
1 回答
481 浏览

ios - 带有 UIViewControllerRepresentable 的 SwiftUI

我正在尝试在 swiftUi 项目中使用可表示的 UIViewController。具体来说,我试图按下一个按钮(assetOne),允许欧盟选择一个视频,然后按下另一个按钮(assetTwo),它允许用户选择另一个视频。然后用户可以选择合并视频(使用第三个按钮)。我认为我需要使用协调器来完成此操作,但是在看到没有它的SO 解决方案之后,我尝试在没有它的情况下执行此操作。但是当我运行我的项目时,构建是成功的,但是当我从内容视图中单击任何按钮时,我会收到下面的错误消息。我究竟做错了什么?我需要一个协调器吗?如何将它与我当前的配置结合起来?

警告:尝试在视图不在窗口层次结构中的 <TempTest.MergeVideoViewController: 0x7fa05ed088c0> 上呈现 <UIImagePickerController: 0x7fa05f827600>!

内容视图:

ImagePicker:UIViewControllerRepresentable

我的 UIViewController 类:

0 投票
2 回答
454 浏览

swift - SwiftUI Game Center 身份验证不提示用户登录

我有以下代码在我的 SwiftUI 应用程序中对 Game Center 中的本地玩家进行身份验证。如果玩家尚未登录,我希望 Game Center 提示用户登录,但这不会发生。

可能是什么问题呢?我还阅读了有关在课堂上的某处使用 UIViewControllerRepresentable 将 UIKit 的 ViewController 集成到 SwiftUI 中的信息,但我不明白如何使用它。有人可以帮我吗?

0 投票
1 回答
288 浏览

swift - 使用 UIImagePickerController 后的性能问题

我有一个 SwiftUI 应用程序,它使用了一个图像选择器,该图像选择器UIViewControllerRepresentable使用.sheet修饰符来显示它。

选择图像后,应用程序的其余部分或多或少会停止运行,直到后台出现某种崩溃,然后一切又变得很快 - 代码后有更多信息:

ImagePicker.swift

选择图像后,它会在父级中正常显示,但其他操作(例如拖动或修改状态)确实很麻烦。该应用程序非常无响应,直到最终发生了一些奇怪的事情——后台发生了某种viewServiceDidTerminateWithError崩溃,一切又开始完美运行,性能恢复正常。随后重新加载图像选择器会使情况变得更糟,直到发生同样的事情——背景崩溃,然后是正常性能。

这是性能恢复正常后的错误:

它似乎确实与使用.sheet. 当我将 Picker 直接放在包含视图中时,它可以正常工作,没有任何问题。

我想知道的是如何正确处理UIImagePickerController模态以阻止此性能问题。

有没有其他人经历过这个,或者知道解决方案?