Swiftui 从列表中删除的视图会泄漏

以下示例显示了列表中的视图(MyView)。轻敲时,它会被完全移除。但是,它的内存从未释放 这一点很明显,但是MyView有一个SomeClass类型的属性,并且它的deinit从未被调用。但是,如果超出列表,视图将被正确处理 这是另一个bug吗 导入快捷界面 结构ContentView:View{ @状态私有变量showView=true var body:一些观点{ VStack{ 名单{ 如果showView{ MyView().tapAction{ self.showView.toggl

SwiftUI:如何让HStack沿多行包装子项(如集合视图)?

我正在尝试使用SwiftUI重新创建基本的集合视图行为: 我有许多视图(例如照片)水平相邻显示。当没有足够的空间显示同一行上的所有照片时,剩余的照片应换行到下一行 下面是一个例子: 看起来可以使用一个VStack和多个HStack元素,每个元素包含一行的照片 我尝试使用GeometryReader并迭代照片视图来动态创建这样的布局,但它无法编译(包含声明的闭包不能与函数生成器“ViewBuilder”一起使用)。是否可以动态创建视图并返回它们 澄清: 盒子/照片可以有不同的宽度(不同于传统的“

SwiftUI:使用自定义滑块时,什么是防止视图消失的正确逻辑语句

当我使用定制的滑块时,我的SwiftUI视图正在消失。我认为这是因为观点的框架价值正在变得消极;然而,我觉得我已经正确地编码了逻辑,以防止这种情况发生(但有些事情是错误的) 我尝试了几种不同的if语句来防止值变为负值,但我没有运气 import SwiftUI struct ContentView: View { @State var scale: CGFloat = 1.0 @State private var dragged = CGSize.zero @State private va

Swiftui 刷新NavigationView环境对象

我正在尝试创建一个可编辑的环境对象,并将其放入列表中。 例如,只有当我切换选项卡(因此每当我离开NavigationView)然后返回时,变量才会刷新 这同样适用于以前的ModalView。可能是虫子吧?还是我做错了什么 import SwiftUI import Combine struct TestView: View { @State var showSheet: Bool = false @EnvironmentObject var feed: TestObject

如何在SwiftUI中通过按更改每个按钮自己的背景颜色来制作每个按钮?

我想让每个按钮在我点击时改变颜色,再次点击时再改变颜色。所以我做了一个布尔didTap,根据它的值,它应该改变它的背景 此时的代码会改变每个按钮的背景。正如我从其他帖子中了解到的,这个按钮系统工作得并不完美 怎么办?如何得到我需要的结果?我应该用别的东西(不是按钮)吗?我应该使用像这样的didTapB1之类的东西吗?(如果使用它,似乎代码会很长?) 您需要向每个按钮添加didTap。只需创建自定义视图即可: struct BingoButton: View { var text: St

SwiftUI如何创建一个按钮,将项目添加到包含导航链接的列表中

我从来没有做过这方面的文章,所以希望这是正确的设置 我是swift新手,我想创建一个按钮,将一个新项目添加到一个列表中,该列表包含一个导航链接,指向一个文件,该文件将使用以前项目中的链接数据创建,在花了几天的时间进行研究和测试后,我还没有找到任何方法来实现这一点 这就是我的应用程序当前的布局,我想在最后:,这里是我提到的不同Q1-4视图的预览: 我知道很多,所以让我更深入地解释一下:我想在所谓的“Q1”(如上所示)中有一个以“第1周”开头的列表,当您单击“添加”按钮时,我希望它添加一个“第2周”

Swiftui 迅捷的石头,布,剪刀游戏

我制作这个游戏是为了学习斯威夫特,但我对它有一些问题。出现以下错误: (LocalizedStringKey)->文本不可转换为 (LocalizedStringKey、String?、Bundle?、StaticString?->Text VStack(间距:30){ 文本(“继续”) .foregroundColor(.白色) .font(.headline) .fontWeight(.黑色) 这是一种可怕的错误。当然,TextView没有任何问题:问题出在其他地方。但是Xcode无法(目前

将文本字段格式设置为小数点后两位,而不输入小数点(SwiftUI)

在文本字段中,我想,当用户输入一个数字,例如12345,它会被格式化为123.45。用户无需输入小数点,只需使用最右边的两个数字作为小数点。该字段也应该只允许数字。这是一个SwiftUI项目。提前感谢您的帮助。由于您输入的内容与文本字段视图中显示的内容之间存在双向绑定,因此似乎无法插入输入的显示数字。我想建议一个小技巧: 创建一个叠加了文本字段和文本视图的ZStack 文本字段中输入文本的前景字体为清晰或白色。foregroundColor(.clear) 键盘是唯一没有小数点的数字:。键盘类

SwiftUI中可选数据类型的选择器?

通常,我可以在SwiftUI中显示如下项目列表: enum Fruit { case apple case orange case banana } struct FruitView: View { @State private var fruit = Fruit.apple var body: some View { Picker(selection: $fruit, label: Text("Fruit")) {

如何获取SwiftUI文本中每个字符的位置

我的第一个想法是基于文本+运算符。似乎很容易,通过作文/一个接一个字符/构建整个文本,并检查部分结果的宽度。。。不幸的是,我没有找到做这件事的方法。所有已知的获取某些几何图形的技巧(alignmentGuide、GeometryReader、AnchorReferences…)都可以用作视图修改器!这意味着文本+运算符不可用。例如,简单地将字符在文本中的位置计算为文本(字符串(字符))宽度的总和是行不通的 Text("WAW") 及 宽度(如预期)不同 最后我得到了(使用复制粘贴来检查它)类似

Swiftui 迅捷+;乐蒂iOS-播放动画

我以蒙托为例,介绍了如何在SwiftUI中播放乐透动画。()然而,我想知道是否有人能帮助我理解如何最初呈现动画的第一帧,但只有在用户以按钮格式点击动画后才能播放动画 我当前的LottieButton文件如下: /*更新-下面的代码现在可以在点击时播放动画*/ import SwiftUI import Lottie struct LottieButton: UIViewRepresentable { /// Create a button. let animationButton = Anim

Swiftui didset不再工作-试图找到解决方法

我找到了这样一个答案,又一次让我的生活倒退了: extension Binding { /// Execute block when value is changed. /// /// Example: /// /// Slider(value: $amount.didSet { print($0) }, in: 0...10) func didSet(execute: @escaping (Value) ->Void) ->

Swiftui 迅捷是不是超级贪婪?

Swift 5,iOS 13 如果我将第二个手势更改为长按,但将两个手势都保留为“点击”,则此代码将起作用,并且它不会显示红色框?我疯了吗 import SwiftUI struct SwiftUIViewQ: View { @State var swap: Bool = false var body: some View { VStack { if swap { SquareView(fillColor: Color.red) .onTapGesture

SwiftUI-检索数据后导航到视图

所以我正在从FireStore检索数据。我正在成功检索数据。当我第一次下载数据并按下新视图时,点击搜索按钮。结果,我得到了一个空白视图。但当我返回时,再次点击搜索,我肯定可以看到我的数据被呈现出来 如何确保我首先拥有正在搜索的数据,然后导航到新视图?我使用了@State变量等,但似乎没有任何效果。我使用的是MVVM方法 我的ViewModel: class SearchPostsViewModel: ObservableObject { var post: [PostModel] = [

Swiftui 将@EnvironmentObject获取到NSObject类

我在App.swift文件中初始化了一个简单的observateObject类,并将其传递到第一个视图: final类计数器:observeObject{} @主要 结构MyCoolApp:App{ @UIApplicationDelegateAdaptor(AppDelegate.self) 私有变量appDelegate 私人出租计数器=计数器() var body:一些场景{ 窗口组{ ContentView() .environmentObject(计数器) } } } 这很好,但现在

Swiftui 迅捷:';listRowInsets';多森';当列表被';导航参数';

我想创建一个带有搜索按钮的导航视图,如下所示: 我使用listRowInsets(EdgeInsets())删除图像的前导和尾随填充 在添加搜索按钮之前,一切正常: 导入快捷界面 结构demoUI:视图{ var body:一些观点{ 导航视图{ 名单{ 图像(“食物”) .scaledToFill() .框架(高度:200) .clipped() .listRowInsets(EdgeInsets()) ForEach(0..

Swiftui 如何使@Binding变量刷新视图

据我所知,如果我需要从视图内部更新视图模型,我需要使其成为绑定变量 模型 enum Options: Int, Identifiable, Equatable, CaseIterable { case option1 = 1 case option2 = 2 case option3 = 3 case option4 = 4 var id: String { "\(self.rawValue)" } } class Test

如何创建一个空的视图数组,然后在SwiftUI中初始化它进行渲染?

我得到了3个编码视图,它们的名字是:circleView1,circleView2,circleView3 它基本上呈现1,2和3的圆形图像 我的目标:我想将这3个视图附加到一个空数组中以供使用。 代码有问题,不起作用 您可以使用SwiftUI的包装器AnyView删除该类型。即使在技术上是可能的,我也不推荐这种使用和消费视图的方式 我的工作示例: 导入快捷界面 struct circleView1:View{var body:some视图{Image(systemName:“1.circle”

正在使用.navigationBarItems剪裁SwiftUI列表

当我添加.navigationBarItems修改器列表时,它是剪切的,不会像这样占用所有空间 它应该像这张照片上一样(没有.navigationBarItems): 代码 struct PatientsListView: View { @ObservedObject var listData = PatientsListViewModel() var body: some View { NavigationView{ Group {

SwiftUI-带自定义视图的选项卡视图覆盖

在上一篇文章中,我询问了在SwiftUI中实现以下选项卡视图覆盖的方法: 再次感谢@davidev的快速支持 我通过应用条件视图修改器修改了解决方案。在本例中,为.overlay() 这也可以工作,但它确实有问题(例如,整个视图导航被重置,我的造型机会有限) 这就引出了我的问题:你们中有人有一个参考实现,我可以用它来指导我的方向吗?我想用一个ZStack来解决这个问题,我可以将它放置在用于导航的选项卡视图上。就像上面的GIF所示。但是,我无法将ZStack放置在选项卡视图上。已经尝试过忽略安全

如何在不压缩SwiftUI的情况下获得原始大小的视图?

我正在尝试制作一个内部有一些文本的HStack,如果文本越来越多,HStack将压缩文本以适应HStack中的所有内容,为了防止压缩,我添加了GeometryReader,但它没有帮助,HStack正在压缩文本,我的代码出了什么问题 struct ContentView:View{ var body:一些观点{ GeometryReader{中的几何体 HStack(间距:25){ ForEach(0..使文本大小固定,如 ForEach(0..<10, id:\.self) { ind

是否可以垂直翻转SwiftUI视图?

看起来您可以使用将视图倒置,但我找不到任何东西表明可以使用SwiftUI视图执行相同的操作 任何帮助都将不胜感激:)事实证明,我可以将此应用于周围的堆栈: .rotationEffect(.degrees(-180)) 垂直翻转的方法实际上与引用的帖子相同 Text(“测试”).font(.largeTitle) .scaleEffect(CGSize(宽度:1.0,高度:-1.0))//这应该是可以接受的答案。这不是翻转视图,而是旋转视图。 Text("Test").f

Swiftui 如何将对底层数组结构的引用传递给视图?

在下面的示例中,我想修改用于从该视图生成视图的数组中的结构。它会导致一个明显的错误(在ForEach中,对当前处理项的引用是一个let常量)。在运行时与视图交互时,如何修改原始数组行?换句话说,如何存储/传递对相应数组项的引用 我还尝试将数组索引传递到视图内部,并通过array[index].someproperty直接访问它。它工作得很好。。。直到我尝试删除行。在这种情况下,动态视图不再包含正确的索引,通常会导致超出范围的错误 在下面的示例中,我希望将拖动位置保存到原始阵列,而不是视图本身,以

正在DetailView中更新SwiftUI@Published属性

我试图了解我是否遵循SwiftUI@发布和@观察对象的理论 理论 我有一个从服务器接收更新的模型。模型发布对模型中数据的任何更改 我的主视图从模型中观察该列表,并创建一个包含单元格视图的列表视图,该单元格视图推送到局部视图。将发布单元视图 局部视图观察对单元视图的更改 我认为应该发生的事情 当模型更新时,这将更新列表视图,实际上是这样的。 当模型更新时,如果加载了详图视图,则详图视图将更新。事实并非如此 如果存在@Published和@ObservedObject链,为什么模型更新时细节视图不更

如何在SwiftUI中为NavigationLink创建工厂方法?

我想为NavigationLink:s创建一个工厂方法,如下所示: func makeNavigationLink(label: String, destination: View) -> some View { NavigationLink(destination: StatsView(), label: { Text(label) .foregroundColor(.white) .font(.title)

如何使用SwiftUI在整个应用程序或仅一个视图上禁用多点触摸?

我想在swiftUI中禁用多点触摸,但我找不到任何解决方案。有什么方法可以做到这一点吗 我发现的一切都与UIKit有关: 没有SwiftUI解决方案,但您可以在SwiftUI应用程序中使用UIKit解决方案 使用UIView.appearance()。这将禁用整个应用程序上的多点触摸 @main struct SwiftUIDEMO: App { init() { UIView.appearance().isMultipleTouchEnabled = false

Swiftui 如何通过另一个可观察的0对象观察已发布的属性-Swift Combine

[编辑] 我应该指出,我正在从大量传感器收集数据,并且不得不污染视图模型,也就是说,正在协调这一过程,大量的@Published和订户代码变得非常乏味和容易出错 我还编辑了代码,以便更能代表实际问题 [原件] 我试图减少使用发布服务器时观察另一个类的结果所需的代码量。我更愿意从生成结果的类发布结果,而不是将其传播回调用类 下面是一个简单的游乐场示例,说明了这个问题 import SwiftUI import Combine class AnObservableObject: Observabl

Swiftui 将ScrollView位置重置到页面顶部

我试图在出现视图时(例如,当您从导航链接导航回页面时)将滚动条重置到页面顶部。ScrollView嵌入在带有大标题的NavigationView中 使用下面的代码,我可以使用ScrollViewReader和scrollTo将滚动重置为页面上的第一个元素 但是,我希望视图能够一直滚动到顶部,这样大的导航栏标题就会重新出现。相反,我只看到内联标题 有没有更好的方法来重置滚动,使其转到页面的最顶端并显示大的导航栏标题 import SwiftUI struct ContentView: View

全局状态变量-SwiftUI

有没有办法在SwiftUI中使用全局状态变量?如果能让我所有的视图都订阅相同的状态,那就太好了。有什么理由不这样做吗 当我试图用@State装饰器声明一个全局变量时,swift编译器崩溃了(测试版软件,对吗?) @状态仅用于管理局部变量。您要查找的包装器是@EnvironmentObject。您可以将其用于主题颜色、方向、已订阅或未订阅的用户等。var globalBool:Bool=false{ var globalBool: Bool = false { didSet {

MacOSX-SwiftUI-如何绘制字符串(文本)和一些路径

我正试着把我的一个老项目应用到新的SwitUI。我找不到在图表上画文字的方法。下面的示例显示了两条线(实际上是某种示波器,显示实时电压变化)。保持故事简短。下面的片段画了两行,然后我想在上面有一些描述“标签” 线条绘制正确,但无法获取任何文本。Mac OS应用程序上不提供UIGraphics。在过去的三天里,我一直在谷歌上搜索。没有成功:-( import SwiftUI import CoreGraphics struct ContentView: View { var body:

如何在SwiftUI中显示整个CALayer内容?

我的代码非常简单,如下所示: import PocketSVG import SwiftUI struct SVGImage: UIViewRepresentable { var SVGName: String? var tintStrokeColor: CGColor? var tintFillColor: CGColor? func makeUIView(context: Context) -> UIView { return UIV

使用if语句在swiftui中设置布尔值

我对swiftui非常陌生,所以我不知道自己是否完全做错了,但这个错误没有帮助。这是我的密码: import SwiftUI struct IntroScreenP2: View { var hasName: Bool = false @State private var firstName: String = "" @State private var lastName: String = "" var body: some View { VStack { if first

Swiftui 如何在ZStack中正确使用NavigationView?

我正在尝试添加一些过滤器选项,使其位于视图的顶部,NavigationView的上方。我写了下面的代码,主要是做我想要的,但是它禁用了单击行以访问详细视图的功能。我想这是因为我的过滤器按钮位于ZStack的顶部,但我不知道如何让它工作 以下是我编写的代码: import SwiftUI struct BonusList: View { var bonuses = sampleBonusData @State var showSettings = false @State

类可以是SwiftUI中的视图吗?

我可以定义如下 struct SimpleView: View { ... final class SimpleView: View { ... 但有点像 struct SimpleView: View { ... final class SimpleView: View { ... 在运行时使用EXC_BAD_指令崩溃。一般来说是不可能的,还是仅就我而言是不可能的?简短的回答:不 较长的答案是Swift(语言)允许这样做,因为没有办法禁止协议被类采用(尽管可以强制协议只被类采用,这与

Swiftui 暗模式用于自定义快捷界面颜色

我从我的设计师那里得到了一系列不同色调的颜色。我是这样做的 公共结构颜色{ 公共静态let blue=blue() 公共静态let灰色=灰色() 公共静态let black=black() 公共静态let green=green() 公共静态let orange=orange() 公共静态let红色=颜色(十六进制字符串:#F8454D) 公共静态let黄色=颜色(十六进制字符串:“#FFAE03”) 公共init(){ } } 公共结构蓝{ 公共let灯光:颜色=颜色(十六进制字符串:“9AB

SwiftUI:viewDidLoad和ViewWillEnglish的等价物是什么

我曾经将GCDWebServer的start()和stop()放在viewDidLoad和视图将消失中 现在在SwiftUI中,我应该把它们放在什么地方? 我尝试将server init()放入场景(u场景:UIScene,willConnectTo,并将server deinit()放入场景数据背景(u场景:) 启动应用程序后,服务器成功启动,当我将应用程序推到后台时,服务器停止。这工作正常。但当应用程序再次返回前台时,服务器不会再次启动 守则: 如果您在sceneDidEnterBackgr

SwiftUI:如何在工作表关闭后显示警报?

我试图显示由模式表触发的警报。下面是一个小的演示项目: import SwiftUI struct ContentView: View { @State private var showSheet = false @State private var showAlert = false var body: some View { Button("Press") { showSheet = true

SwiftUI禁用列表边框iOS 14

我发现,如果视图包含navigationView,SwiftUIIOS14中的列表将具有类似于边框的内容。有没有办法禁用边界?因为边界打破了我应用程序的设计 以下是代码中不包含导航视图的代码。 struct ContentView: View { @State var isPresent = false var body: some View { let first = Restaurant(name: "Joe's Original"

我们如何为ForEach SwiftUI定制步骤?

我有一个与索引一起工作的ForEach循环,我如何使这个ForEach步骤得到自定义步骤,因为在ForEach中的每个循环中,它将向索引添加一个,我们如何使步骤为5,这意味着在每个循环中添加5而不是1。我可以使用if和%,使之成为可能,但我不希望ForEach尝试项目中的每个项目。我们如何使其高效编码 代码: struct ContentView:View { var body:一些观点 { 列表 { ForEach(0..

Swiftui 如何在NSOpenPanel beginSheet方法中引用窗口

我在我的macOS广告SwiftUI项目中有以下代码,它运行良好 var myDataset = [Dataset]() @State private var isError = false var body: some View { Button("Load data...", action: { let panel = NSOpenPanel() panel.title = "Select CSV formatted

Swiftui iOS 14中不推荐使用UIDocumentPickerViewController(documentType:in)

我正在开发一个swiftUI iOS 13+应用程序,在开发用于文档拾取的UIViewRepresentable时遇到警告 根据apple开发文档,UIDocumentPickerViewController的初始化器将在未来版本中被弃用,因此此行: let picker = UIDocumentPickerViewController(documentTypes: [kUTTypePDF as String], in: .open) 提示弃用警告,我很难找到替代者。有人能帮我吗 谢谢在问这个

与视图层次结构捕获相比,SwiftUI视图在设备和预览中的显示方式有所不同

我对SwiftUI有问题 有一个问题 yello视图在首次启动视图中不显示 移动到主页,使应用程序进入后台模式 移动到应用程序(前台) 然后出现黄色视图 我在步骤1中捕获了视图层次结构。 (左边是视图层次捕获,右边是模拟器) 视图层次结构捕获显示黄色方块,但模拟器未显示黄色方块 我查看了view breadscrum,但两者都是相同的,所以我没有任何线索 我相信这不是一个网络问题 有两种方式显示黄色方形 背景->前景 显示警报->解除警报 我不确定这是否是一个框架错误 另外,是否有任何API可以

Swiftui 带信息按钮的快捷方式列表行

UIKit用于支持启用蓝色信息/披露按钮的TableView单元格。以下内容是在SwiftUI中生成的,但是,对于初学者来说,如何使底层功能正常工作是一个挑战 由以下代码生成: struct Session: Identifiable { let date: Date let dir: String let instrument: String let description: String var id: Date { date } } final

在TabView-SwiftUI中切换选项卡后,搜索控制器消失

我正在编写一个带有TabView的iOS应用程序。我的一个视图中有一个搜索字段。我有一个UITableViewController,其中包含一个包装在UIViewRepresentable中的UISearchController。UIViewRepresentable返回UISearchBar: struct SearchAndSuggestionsController: UIViewRepresentable { let uiSearchAndSuggestionController =

SwiftUI:NavigationLinks依赖于切换状态

我正在尝试创建一个NavigationLink目的地,如果将多个切换开关中的任何一个设置为TRUE,该目的地将发生更改。我已经使用标记和状态变量计算出了链接的if/then逻辑。也就是说,如果我手动设置toggleCount=链接工作正常 然而,我想做的是设置真正开关的数量。您可以看到我在数组中循环失败的尝试,并递增切换计数。它失败是因为它不符合视图 有没有关于一个干净的方法来实现这一点的建议?我不需要计算真正开关的数量,我只需要知道其中是否有一个设置为真 import SwiftUI str

SwiftUI,警报中断导航链接?

以前关于这个问题的线程都没有给出快速的答案,我不知道如何在SwiftUI中实现。请注意,我使用的是Xcode 12.5 我创建了一个游乐场,试图发布代码的“演示”版本,但你不知道吗,游乐场运行得完美无缺。所以,在不让你的眼睛流血的情况下发布一些代码。我收到这个警告: pushViewController:animated:在现有转换或演示发生时调用;导航堆栈将不会更新 下面是代码的操作方式: 从视图A导航到视图B。在视图A的NavigationLink中,我运行以下命令:

  1    2   3   4   5   6  ... 下一页 最后一页 共 48 页