以下示例显示了列表中的视图(MyView)。轻敲时,它会被完全移除。但是,它的内存从未释放
这一点很明显,但是MyView有一个SomeClass类型的属性,并且它的deinit从未被调用。但是,如果超出列表,视图将被正确处理
这是另一个bug吗
导入快捷界面
结构ContentView:View{
@状态私有变量showView=true
var body:一些观点{
VStack{
名单{
如果showView{
MyView().tapAction{
self.showView.toggl
我正在尝试使用SwiftUI重新创建基本的集合视图行为:
我有许多视图(例如照片)水平相邻显示。当没有足够的空间显示同一行上的所有照片时,剩余的照片应换行到下一行
下面是一个例子:
看起来可以使用一个VStack和多个HStack元素,每个元素包含一行的照片
我尝试使用GeometryReader并迭代照片视图来动态创建这样的布局,但它无法编译(包含声明的闭包不能与函数生成器“ViewBuilder”一起使用)。是否可以动态创建视图并返回它们
澄清:
盒子/照片可以有不同的宽度(不同于传统的“
当我使用定制的滑块时,我的SwiftUI视图正在消失。我认为这是因为观点的框架价值正在变得消极;然而,我觉得我已经正确地编码了逻辑,以防止这种情况发生(但有些事情是错误的)
我尝试了几种不同的if语句来防止值变为负值,但我没有运气
import SwiftUI
struct ContentView: View {
@State var scale: CGFloat = 1.0
@State private var dragged = CGSize.zero
@State private va
我正在尝试创建一个可编辑的环境对象,并将其放入列表中。
例如,只有当我切换选项卡(因此每当我离开NavigationView)然后返回时,变量才会刷新
这同样适用于以前的ModalView。可能是虫子吧?还是我做错了什么
import SwiftUI
import Combine
struct TestView: View {
@State var showSheet: Bool = false
@EnvironmentObject var feed: TestObject
我想让每个按钮在我点击时改变颜色,再次点击时再改变颜色。所以我做了一个布尔didTap,根据它的值,它应该改变它的背景
此时的代码会改变每个按钮的背景。正如我从其他帖子中了解到的,这个按钮系统工作得并不完美
怎么办?如何得到我需要的结果?我应该用别的东西(不是按钮)吗?我应该使用像这样的didTapB1之类的东西吗?(如果使用它,似乎代码会很长?)
您需要向每个按钮添加didTap。只需创建自定义视图即可:
struct BingoButton: View {
var text: St
我从来没有做过这方面的文章,所以希望这是正确的设置
我是swift新手,我想创建一个按钮,将一个新项目添加到一个列表中,该列表包含一个导航链接,指向一个文件,该文件将使用以前项目中的链接数据创建,在花了几天的时间进行研究和测试后,我还没有找到任何方法来实现这一点
这就是我的应用程序当前的布局,我想在最后:,这里是我提到的不同Q1-4视图的预览:
我知道很多,所以让我更深入地解释一下:我想在所谓的“Q1”(如上所示)中有一个以“第1周”开头的列表,当您单击“添加”按钮时,我希望它添加一个“第2周”
我制作这个游戏是为了学习斯威夫特,但我对它有一些问题。出现以下错误:
(LocalizedStringKey)->文本不可转换为
(LocalizedStringKey、String?、Bundle?、StaticString?->Text
VStack(间距:30){
文本(“继续”)
.foregroundColor(.白色)
.font(.headline)
.fontWeight(.黑色)
这是一种可怕的错误。当然,TextView没有任何问题:问题出在其他地方。但是Xcode无法(目前
在文本字段中,我想,当用户输入一个数字,例如12345,它会被格式化为123.45。用户无需输入小数点,只需使用最右边的两个数字作为小数点。该字段也应该只允许数字。这是一个SwiftUI项目。提前感谢您的帮助。由于您输入的内容与文本字段视图中显示的内容之间存在双向绑定,因此似乎无法插入输入的显示数字。我想建议一个小技巧:
创建一个叠加了文本字段和文本视图的ZStack
文本字段中输入文本的前景字体为清晰或白色。foregroundColor(.clear)
键盘是唯一没有小数点的数字:。键盘类
通常,我可以在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")) {
我的第一个想法是基于文本+运算符。似乎很容易,通过作文/一个接一个字符/构建整个文本,并检查部分结果的宽度。。。不幸的是,我没有找到做这件事的方法。所有已知的获取某些几何图形的技巧(alignmentGuide、GeometryReader、AnchorReferences…)都可以用作视图修改器!这意味着文本+运算符不可用。例如,简单地将字符在文本中的位置计算为文本(字符串(字符))宽度的总和是行不通的
Text("WAW")
及
宽度(如预期)不同
最后我得到了(使用复制粘贴来检查它)类似
我以蒙托为例,介绍了如何在SwiftUI中播放乐透动画。()然而,我想知道是否有人能帮助我理解如何最初呈现动画的第一帧,但只有在用户以按钮格式点击动画后才能播放动画
我当前的LottieButton文件如下:
/*更新-下面的代码现在可以在点击时播放动画*/
import SwiftUI
import Lottie
struct LottieButton: UIViewRepresentable {
/// Create a button.
let animationButton = Anim
我找到了这样一个答案,又一次让我的生活倒退了:
extension Binding {
/// Execute block when value is changed.
///
/// Example:
///
/// Slider(value: $amount.didSet { print($0) }, in: 0...10)
func didSet(execute: @escaping (Value) ->Void) ->
例如,如果从视图A导航到视图B,视图B通常会在导航栏的左侧显示一个后退按钮,上面写着“
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
我能够显示JSON的名称、每次发布的成本等。但是,我无法访问有效负载\u权重和flic\u图像的值。我想是因为它们在一系列对象中
这是JSON文件的一部分
[
{
"rocketid": 1,
"id": "falcon1",
"name": "Falcon 1",
"type": "rocket",
"
所以我正在从FireStore检索数据。我正在成功检索数据。当我第一次下载数据并按下新视图时,点击搜索按钮。结果,我得到了一个空白视图。但当我返回时,再次点击搜索,我肯定可以看到我的数据被呈现出来
如何确保我首先拥有正在搜索的数据,然后导航到新视图?我使用了@State变量等,但似乎没有任何效果。我使用的是MVVM方法
我的ViewModel:
class SearchPostsViewModel: ObservableObject {
var post: [PostModel] = [
标签: Swiftui
observableobjectenvironmentobject
我在App.swift文件中初始化了一个简单的observateObject类,并将其传递到第一个视图:
final类计数器:observeObject{}
@主要
结构MyCoolApp:App{
@UIApplicationDelegateAdaptor(AppDelegate.self)
私有变量appDelegate
私人出租计数器=计数器()
var body:一些场景{
窗口组{
ContentView()
.environmentObject(计数器)
}
}
}
这很好,但现在
我想创建一个带有搜索按钮的导航视图,如下所示:
我使用listRowInsets(EdgeInsets())删除图像的前导和尾随填充
在添加搜索按钮之前,一切正常:
导入快捷界面
结构demoUI:视图{
var body:一些观点{
导航视图{
名单{
图像(“食物”)
.scaledToFill()
.框架(高度:200)
.clipped()
.listRowInsets(EdgeInsets())
ForEach(0..
据我所知,如果我需要从视图内部更新视图模型,我需要使其成为绑定变量
模型
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
我得到了3个编码视图,它们的名字是:circleView1,circleView2,circleView3
它基本上呈现1,2和3的圆形图像
我的目标:我想将这3个视图附加到一个空数组中以供使用。
代码有问题,不起作用
您可以使用SwiftUI的包装器AnyView删除该类型。即使在技术上是可能的,我也不推荐这种使用和消费视图的方式
我的工作示例:
导入快捷界面
struct circleView1:View{var body:some视图{Image(systemName:“1.circle”
当我添加.navigationBarItems修改器列表时,它是剪切的,不会像这样占用所有空间
它应该像这张照片上一样(没有.navigationBarItems):
代码
struct PatientsListView: View {
@ObservedObject var listData = PatientsListViewModel()
var body: some View {
NavigationView{
Group {
在上一篇文章中,我询问了在SwiftUI中实现以下选项卡视图覆盖的方法:
再次感谢@davidev的快速支持
我通过应用条件视图修改器修改了解决方案。在本例中,为.overlay()
这也可以工作,但它确实有问题(例如,整个视图导航被重置,我的造型机会有限)
这就引出了我的问题:你们中有人有一个参考实现,我可以用它来指导我的方向吗?我想用一个ZStack来解决这个问题,我可以将它放置在用于导航的选项卡视图上。就像上面的GIF所示。但是,我无法将ZStack放置在选项卡视图上。已经尝试过忽略安全
我正在尝试制作一个内部有一些文本的HStack,如果文本越来越多,HStack将压缩文本以适应HStack中的所有内容,为了防止压缩,我添加了GeometryReader,但它没有帮助,HStack正在压缩文本,我的代码出了什么问题
struct ContentView:View{
var body:一些观点{
GeometryReader{中的几何体
HStack(间距:25){
ForEach(0..使文本大小固定,如
ForEach(0..<10, id:\.self) { ind
看起来您可以使用将视图倒置,但我找不到任何东西表明可以使用SwiftUI视图执行相同的操作
任何帮助都将不胜感激:)事实证明,我可以将此应用于周围的堆栈:
.rotationEffect(.degrees(-180))
垂直翻转的方法实际上与引用的帖子相同
Text(“测试”).font(.largeTitle)
.scaleEffect(CGSize(宽度:1.0,高度:-1.0))//这应该是可以接受的答案。这不是翻转视图,而是旋转视图。
Text("Test").f
在下面的示例中,我想修改用于从该视图生成视图的数组中的结构。它会导致一个明显的错误(在ForEach中,对当前处理项的引用是一个let常量)。在运行时与视图交互时,如何修改原始数组行?换句话说,如何存储/传递对相应数组项的引用
我还尝试将数组索引传递到视图内部,并通过array[index].someproperty直接访问它。它工作得很好。。。直到我尝试删除行。在这种情况下,动态视图不再包含正确的索引,通常会导致超出范围的错误
在下面的示例中,我希望将拖动位置保存到原始阵列,而不是视图本身,以
我试图了解我是否遵循SwiftUI@发布和@观察对象的理论
理论
我有一个从服务器接收更新的模型。模型发布对模型中数据的任何更改
我的主视图从模型中观察该列表,并创建一个包含单元格视图的列表视图,该单元格视图推送到局部视图。将发布单元视图
局部视图观察对单元视图的更改
我认为应该发生的事情
当模型更新时,这将更新列表视图,实际上是这样的。
当模型更新时,如果加载了详图视图,则详图视图将更新。事实并非如此
如果存在@Published和@ObservedObject链,为什么模型更新时细节视图不更
我想为NavigationLink:s创建一个工厂方法,如下所示:
func makeNavigationLink(label: String, destination: View) -> some View {
NavigationLink(destination: StatsView(), label: {
Text(label)
.foregroundColor(.white)
.font(.title)
我想在swiftUI中禁用多点触摸,但我找不到任何解决方案。有什么方法可以做到这一点吗
我发现的一切都与UIKit有关:
没有SwiftUI解决方案,但您可以在SwiftUI应用程序中使用UIKit解决方案
使用UIView.appearance()。这将禁用整个应用程序上的多点触摸
@main
struct SwiftUIDEMO: App {
init() {
UIView.appearance().isMultipleTouchEnabled = false
[编辑]
我应该指出,我正在从大量传感器收集数据,并且不得不污染视图模型,也就是说,正在协调这一过程,大量的@Published和订户代码变得非常乏味和容易出错
我还编辑了代码,以便更能代表实际问题
[原件]
我试图减少使用发布服务器时观察另一个类的结果所需的代码量。我更愿意从生成结果的类发布结果,而不是将其传播回调用类
下面是一个简单的游乐场示例,说明了这个问题
import SwiftUI
import Combine
class AnObservableObject: Observabl
我试图在出现视图时(例如,当您从导航链接导航回页面时)将滚动条重置到页面顶部。ScrollView嵌入在带有大标题的NavigationView中
使用下面的代码,我可以使用ScrollViewReader和scrollTo将滚动重置为页面上的第一个元素
但是,我希望视图能够一直滚动到顶部,这样大的导航栏标题就会重新出现。相反,我只看到内联标题
有没有更好的方法来重置滚动,使其转到页面的最顶端并显示大的导航栏标题
import SwiftUI
struct ContentView: View
有没有办法在SwiftUI中使用全局状态变量?如果能让我所有的视图都订阅相同的状态,那就太好了。有什么理由不这样做吗
当我试图用@State装饰器声明一个全局变量时,swift编译器崩溃了(测试版软件,对吗?) @状态仅用于管理局部变量。您要查找的包装器是@EnvironmentObject。您可以将其用于主题颜色、方向、已订阅或未订阅的用户等。var globalBool:Bool=false{
var globalBool: Bool = false {
didSet {
调用映像时我遇到错误:
“(字符串)->Image”不能转换为“(字符串,捆绑?->Image”\
此错误显示在线条图像(specie.imageName)上
这是整个页面的代码
import SwiftUI
struct ForefootView : View {
@State var iconOpacity: Double = 0.5
let specie: Species
var body: some View {
NavigationView {
Z
我正试着把我的一个老项目应用到新的SwitUI。我找不到在图表上画文字的方法。下面的示例显示了两条线(实际上是某种示波器,显示实时电压变化)。保持故事简短。下面的片段画了两行,然后我想在上面有一些描述“标签”
线条绘制正确,但无法获取任何文本。Mac OS应用程序上不提供UIGraphics。在过去的三天里,我一直在谷歌上搜索。没有成功:-(
import SwiftUI
import CoreGraphics
struct ContentView: View {
var body:
我的代码非常简单,如下所示:
import PocketSVG
import SwiftUI
struct SVGImage: UIViewRepresentable {
var SVGName: String?
var tintStrokeColor: CGColor?
var tintFillColor: CGColor?
func makeUIView(context: Context) -> UIView {
return UIV
我对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
我正在尝试添加一些过滤器选项,使其位于视图的顶部,NavigationView的上方。我写了下面的代码,主要是做我想要的,但是它禁用了单击行以访问详细视图的功能。我想这是因为我的过滤器按钮位于ZStack的顶部,但我不知道如何让它工作
以下是我编写的代码:
import SwiftUI
struct BonusList: View {
var bonuses = sampleBonusData
@State var showSettings = false
@State
我可以定义如下
struct SimpleView: View { ...
final class SimpleView: View { ...
但有点像
struct SimpleView: View { ...
final class SimpleView: View { ...
在运行时使用EXC_BAD_指令崩溃。一般来说是不可能的,还是仅就我而言是不可能的?简短的回答:不
较长的答案是Swift(语言)允许这样做,因为没有办法禁止协议被类采用(尽管可以强制协议只被类采用,这与
标签: Swiftui
customizationios-darkmode
我从我的设计师那里得到了一系列不同色调的颜色。我是这样做的
公共结构颜色{
公共静态let blue=blue()
公共静态let灰色=灰色()
公共静态let black=black()
公共静态let green=green()
公共静态let orange=orange()
公共静态let红色=颜色(十六进制字符串:#F8454D)
公共静态let黄色=颜色(十六进制字符串:“#FFAE03”)
公共init(){
}
}
公共结构蓝{
公共let灯光:颜色=颜色(十六进制字符串:“9AB
我曾经将GCDWebServer的start()和stop()放在viewDidLoad和视图将消失中
现在在SwiftUI中,我应该把它们放在什么地方?
我尝试将server init()放入场景(u场景:UIScene,willConnectTo,并将server deinit()放入场景数据背景(u场景:)
启动应用程序后,服务器成功启动,当我将应用程序推到后台时,服务器停止。这工作正常。但当应用程序再次返回前台时,服务器不会再次启动
守则:
如果您在sceneDidEnterBackgr
我试图显示由模式表触发的警报。下面是一个小的演示项目:
import SwiftUI
struct ContentView: View {
@State private var showSheet = false
@State private var showAlert = false
var body: some View {
Button("Press") {
showSheet = true
我发现,如果视图包含navigationView,SwiftUIIOS14中的列表将具有类似于边框的内容。有没有办法禁用边界?因为边界打破了我应用程序的设计
以下是代码中不包含导航视图的代码。
struct ContentView: View {
@State var isPresent = false
var body: some View {
let first = Restaurant(name: "Joe's Original"
我有一个与索引一起工作的ForEach循环,我如何使这个ForEach步骤得到自定义步骤,因为在ForEach中的每个循环中,它将向索引添加一个,我们如何使步骤为5,这意味着在每个循环中添加5而不是1。我可以使用if和%,使之成为可能,但我不希望ForEach尝试项目中的每个项目。我们如何使其高效编码
代码:
struct ContentView:View
{
var body:一些观点
{
列表
{
ForEach(0..
导航或按钮操作在PageTabViewStyle选项卡视图的页面中均不起作用。有人有什么想法或解决办法吗?复制代码:
var body: some View {
VStack {
TabView(selection: $selection) {
Button(action: {
print("First selected")
}){
Text
我在我的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 13+应用程序,在开发用于文档拾取的UIViewRepresentable时遇到警告
根据apple开发文档,UIDocumentPickerViewController的初始化器将在未来版本中被弃用,因此此行:
let picker = UIDocumentPickerViewController(documentTypes: [kUTTypePDF as String], in: .open)
提示弃用警告,我很难找到替代者。有人能帮我吗
谢谢在问这个
我对SwiftUI有问题
有一个问题
yello视图在首次启动视图中不显示
移动到主页,使应用程序进入后台模式
移动到应用程序(前台)
然后出现黄色视图
我在步骤1中捕获了视图层次结构。
(左边是视图层次捕获,右边是模拟器)
视图层次结构捕获显示黄色方块,但模拟器未显示黄色方块
我查看了view breadscrum,但两者都是相同的,所以我没有任何线索
我相信这不是一个网络问题
有两种方式显示黄色方形
背景->前景
显示警报->解除警报
我不确定这是否是一个框架错误
另外,是否有任何API可以
标签: Swiftui
swiftui-navigationlinkswiftui-navigationview
UIKit用于支持启用蓝色信息/披露按钮的TableView单元格。以下内容是在SwiftUI中生成的,但是,对于初学者来说,如何使底层功能正常工作是一个挑战
由以下代码生成:
struct Session: Identifiable {
let date: Date
let dir: String
let instrument: String
let description: String
var id: Date { date }
}
final
标签: Swiftui
uisearchcontrollertabviewuiviewrepresentable
我正在编写一个带有TabView的iOS应用程序。我的一个视图中有一个搜索字段。我有一个UITableViewController,其中包含一个包装在UIViewRepresentable中的UISearchController。UIViewRepresentable返回UISearchBar:
struct SearchAndSuggestionsController: UIViewRepresentable {
let uiSearchAndSuggestionController =
标签: Swiftui
toggleswiftui-navigationlink
我正在尝试创建一个NavigationLink目的地,如果将多个切换开关中的任何一个设置为TRUE,该目的地将发生更改。我已经使用标记和状态变量计算出了链接的if/then逻辑。也就是说,如果我手动设置toggleCount=链接工作正常
然而,我想做的是设置真正开关的数量。您可以看到我在数组中循环失败的尝试,并递增切换计数。它失败是因为它不符合视图
有没有关于一个干净的方法来实现这一点的建议?我不需要计算真正开关的数量,我只需要知道其中是否有一个设置为真
import SwiftUI
str
标签: Swiftui
alertswiftui-navigationlink
以前关于这个问题的线程都没有给出快速的答案,我不知道如何在SwiftUI中实现。请注意,我使用的是Xcode 12.5
我创建了一个游乐场,试图发布代码的“演示”版本,但你不知道吗,游乐场运行得完美无缺。所以,在不让你的眼睛流血的情况下发布一些代码。我收到这个警告:
pushViewController:animated:在现有转换或演示发生时调用;导航堆栈将不会更新
下面是代码的操作方式:
从视图A导航到视图B。在视图A的NavigationLink中,我运行以下命令:
1 2 3 4 5 6 ...
下一页 最后一页 共 48 页