Provide views, controls, and layout structures for declaring your app's user interface using SwiftUI.

SwiftUI Documentation

Posts under SwiftUI tag

2,331 Posts
Sort by:
Post not yet marked as solved
0 Replies
126 Views
I want to change the display language, particularly for week and the year and date on MultiDatePicker. By adjusting the locale, the year and date can be changed. However, I'm unable to change the display for week . I've tried several methods, such as setting the calendar and adjusting the time zone, but none of them seem to work. Are there any good way to solve it?
Posted
by hcrane.
Last updated
.
Post not yet marked as solved
3 Replies
186 Views
I am trying to create an iOS app where I need to immediately know when the iPhone is unlocked. Let's say I want to print a log on the Xcode console whenever the phone is unlocked. From my app, how do I detect if the phone is unlocked? Some code pointers will be highly appreciated. I am a newbie in iOS/APP development. It should work even if my app is not running. Is it even possible to do so?
Posted Last updated
.
Post not yet marked as solved
3 Replies
132 Views
Hello, I use Preview to quickly test functionalities. However I found that the unified logging does not output to Preview console. So I had to do both log.debug and print. Is there a way to enable logging to Preview console?
Posted Last updated
.
Post not yet marked as solved
1 Replies
120 Views
I'm fairly new to SwiftUI and when I create a new file in a project and make edits to it, when in the process of commiting the changes to my local repository, i notice that Xcode is creating duplicate files of all my files with changes, including the main app file. They each have a '._' prefix on them. When I view the changes in these files the text is unrecognizable, and i can't locate them in finder. They seem to get in teway of trying to merge branches in my repository ._ContentView -----END SIGNED MESSAGE-----git_revwalk_new(&walk, repo)NSString *gitRepositoryIdentifier(git_repository *)git_revwalk_push_head(walk)gitErrorgit_commit_lookup(&commit, repo, &revisionOID)git_commit_tree(&tree, commit)git_mailmap_from_repository(&mailmap, repo)git_remote_list(&remotes, repo)git_remote *lookupRemote(git_repository *, DVTSourceControlRemoteRepository *__strong, BOOL, NSString *__autoreleasing *, NSError *__autoreleasing *)git_remote_lookup(&remote, repo, remoteName)status--porcelain-[DVTSourceControlGitPlugInPrimary(Status) _filesAndStatusOfWorkingCopy:withRemoteStatus:]git_status_list_new(&statusList, repo, &statusOptions)Silent error with libgit operation (%s)git_repository_head(&head, repo)git_branch_upstream(&upstreamBranch, head)git_merge_base(&mergeBase, repo, git_reference_target(head), git_reference_target(upstreamBranch))git_commit_lookup(&baseCommit, repo, &mergeBase)git_commit_tree(&baseTree, baseCommit)git_reference_peel((git_object **)&upstreamTree, upstreamBranch, GIT_OBJ_TREE)git_diff_tree_to_tree(&treeDiff, repo, baseTree, upstreamTree, &diffopts)%@...%@-[DVTSourceControlGitPlugInPrimary(Status) filesAndStatusOfWorkingCopy:sourceBranch:targetBranch:completionBlock:]git_reference_lookup(&sourceReference, repo, sourceBranchName)git_reference_lookup(&targetReference, repo, targetBranchName)git_reference_name_to_id(&source_tree_oid, repo, source_ref_name)git_reference_name_to_id(&target_tree_oid, repo, target_ref_name)git_reference_peel((git_object **)&sourceTree, sourceReference, GIT_OBJ_TREE)git_reference_peel((git_object **)&targetTree, targetReference, GIT_OBJ_TREE)diff--name-status git_merge_base(&merge_base, repo, &source_tree_oid, &target_tree_oid)--no-color--stagedcore.excludesfileB24@?0@8@"NSDictionary"16~/%@.gitignore_globalgit_config_set_string(levelConfig, "core.excludesfile", ignorePath.fileSystemRepresentation)-[DVTSourceControlGitPlugInPrimary(Ignore) setIgnoredFiles:completionBlock:]%s index.lockstashsave-u-[DVTSourceControlGitPlugInPrimary(Stash) stashChangesOfWorkingCopy:includingUnversioned:message:completionBlock:]i32@?0Q8r*16r^{git_oid=[20C]}24Could not locate stash identifier from revisionv24@?0q8@"NSError"16-[DVTSourceControlGitPlugInPrimary(Stash) _deleteStash:stashIdentifier:completionBlock:]git_stash_drop(repo, stashIdentifier)-[DVTSourceControlGitPlugInPrimary(Stash) _stashIdentiferFromRevision:workingCopy:completionBlock:]git_stash_foreach(repo, stashCallback, (__bridge void *)stashBlock)-[DVTSourceControlGitPlugInPrimary(Stash) applyStashInWorkingCopy:stash:completionBlock:]git_stash_apply(repo, stashIndex, &options)git_repository_index(&index, repo)show-p%ld%ld.patchCouldn't create temporary path for stash '%ld'Couldn't write data to path '%@'v16@?0@"DVTSourceControlHistoryResultType"8DVTSourceControlCMSClassErrorCodeKeyCMS Module Error with code %d.SecTrust could not validate the signing certificate.Signature is invalid or malformed.No remote repository specified for fetch.Specified local repository has no on-disk URL set.--jobs=%lufetch--atomic--quiet--no-recurse-submodulesv16@?0@"NSData"8debug1%@v24@?0@"NSString"8^B16ssh: Could not resolve hostnamePermission deniedHost key verification failedCould not read from remote repositoryUnknown error while fetching remote changes. Make sure the remote is set up correctly and that you have access to it.git_remote_fetch(remote, NULL, &fetchOptions, NULL)-[DVTSourceControlGitPlugInPrimary(Update) fetchFromRemoteRepositoryUsingLibGit:repo:includeTags:prune:error:]Failed to locate remote for URL '%@'-[DVTSourceControlGitPlugInPrimary(Update) downloadUpdatesFromRemoteRepository:toRepository:removeDeletedLocations:progressIdentifier:completionBlock:]-[DVTSourceControlGitPlu I notice that when following online tutorials on the subject of source control, they don't show any files like these. What am I missing?
Posted
by Donja.
Last updated
.
Post not yet marked as solved
0 Replies
74 Views
When adding a Map using the MapKit this changes the appearance of the TabBar appearance, specifically gives the toolbar a translucent background with a shadow; the default iOS style. I have tried adding the following modifier to the Map .toolbarBackground(Color("White"), for: .navigationBar) But the navigation toolbar still has a shadow, and the TabBar has the default translucent background colour with shadow. Root init() { // this is not the same as manipulating the proxy directly let appearance = UINavigationBarAppearance() // this overrides everything you have set up earlier. appearance.configureWithTransparentBackground() appearance.shadowColor = .clear //In the following two lines you make sure that you apply the style for good UINavigationBar.appearance().scrollEdgeAppearance = appearance UINavigationBar.appearance().standardAppearance = appearance UITabBar.appearance().barTintColor = UIColor.white) UITabBar.appearance().backgroundColor = UIColor.white) UITabBar.appearance().shadowImage = UIImage() UITabBar.appearance().backgroundImage = UIImage() UINavigationBar.appearance().isTranslucent = false UIToolbar.appearance().backgroundColor = UIColor.white) UIToolbar.appearance().isTranslucent = false UIToolbar.appearance().setShadowImage(UIImage(), forToolbarPosition: .any) } struct MainView: View { var body: some View { TabView { ContentView() .tabItem { Label("Menu", systemImage: "list.dash") } } } } The Tabbar has a solid white colour with no shadow, as well as navigation bars. Content View struct ContentView: View { var body: some View { NavigationStack() { NavigationLink(destination: MapView()) { Text("Hello, World!") } } .navigationTitle("Content") } } MapView struct MapView: View { @State private var region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5)) var body: some View { Map(coordinateRegion: $region) .mapControlVisibility(.hidden) .allowsHitTesting(false) .frame(maxWidth: .infinity) .frame(height: 414) .clipped() } } I have looked through the documentation but could not find anything. https://developer.apple.com/documentation/mapkit/map
Posted
by RileyDev.
Last updated
.
Post marked as solved
2 Replies
90 Views
Hi, How to catch the event when details panel of a SplitView shows and get hidden, like when split is 2 columns and when its details only ? Kindest Regards
Posted Last updated
.
Post not yet marked as solved
1 Replies
106 Views
Hello can I have some help on how to fix the code. Please can you tell me what to adjust to make the code work.(it was from a YouTube video and have compared it as close as possible and still doesn't work. 'No exact matches in call to initialiser' error at the work 'Group {' import SwiftUI struct ContentView: View { @State var text: Array<String> = [] @State var showsheet = false @State var textitemtemp = "" var body: some View { NavigationView { Group { if text.count <= 1 { Text("no items") } else { List { ForEach((1...text.count-1, id: \.self), {i in Text(text[i]) .contextMenu { Button(action: { text.remove(at: i) }, label: { Label ("Delete", systemImage: "delete.left") }) } } ) } .navigationTitle("Idea Book") .toolbar { Button(action: { showsheet.toggle() textitemtemp = "" }, label: { Image(systemName: "plus") } ) } .onChange(of: text) { save() load() } .onAppear() { save() load() } } .refreshable { save() load() } .sheet(isPresented: $showsheet) { NavigationView { List { TextField("Item", text: $textitemtemp) } .navigationTitle("Add an Idea") .toolbar { Button("add") { text.append(textitemtemp) showsheet.toggle() } } } } func save() -> Void { let temp = text.joined(separator: "/[split]/") let key = UserDefaults.standard key.set(temp, forKey: "text") } func load() -> Void { let key = UserDefaults.standard let temp = key.string(forKey: "text") ?? "" let temparray = temp.components(separatedBy:"/[split]/") text = temparray } } #if DEBUG ContentView() #endif } } }
Posted Last updated
.
Post not yet marked as solved
4 Replies
199 Views
I already filed feedback FB13777941 for this, but wanted to ask if anyone has the same problem, since I can't find anything on google or SO. I created a new package in Xcode (15.3) and added this to it: import SwiftUI struct Test: View { var body: some View { Text("Hello world") } } #Preview { Test() } The package builds, tests can run. Previews don't work. This is more or less the error I get from the diagnostics button (formatted for readability): LoadingError: failed to load library at path ”PATH_TO_DERIVED_DATA/Build/Intermediates.noindex/Previews/macos/PACKAGE_NAME/Products/Debug/PackageFrameworks/PACKAGE_NAME_63097C4A372B9C87_PackageProduct.framework/PACKAGE_NAME_63097C4A372B9C87_PackageProduct”: Optional(dlopen(PATH_TO_DERIVED_DATA/Build/Intermediates.noindex/Previews/macos/PACKAGE_NAME/Products/Debug/PackageFrameworks/PACKAGE_NAME_63097C4A372B9C87_PackageProduct.framework/PACKAGE_NAME_63097C4A372B9C87_PackageProduct, 0x0000): tried: 'PATH_TO_DERIVED_DATA/Build/Intermediates.noindex/Previews/macos/PACKAGE_NAME/Products/Debug/PACKAGE_NAME_63097C4A372B9C87_PackageProduct.framework/PACKAGE_NAME_63097C4A372B9C87_PackageProduct' (no such file), 'PATH_TO_DERIVED_DATA/Build/Intermediates.noindex/Previews/macos/PACKAGE_NAME/Products/Debug/PackageFrameworks/PACKAGE_NAME_63097C4A372B9C87_PackageProduct.framework/PACKAGE_NAME_63097C4A372B9C87_PackageProduct' (mach-o file, but is an incompatible architecture (have 'arm64', need 'arm64e')), '/System/Volumes/Preboot/Cryptexes/OSPATH_TO_DERIVED_DATA/Build/Intermediates.noindex/Previews/macos/PACKAGE_NAME/Products/Debug/PackageFrameworks/PACKAGE_NAME_63097C4A372B9C87_PackageProduct.framework/PACKAGE_NAME_63097C4A372B9C87_PackageProduct' (no such file), 'PATH_TO_DERIVED_DATA/Build/Intermediates.noindex/Previews/macos/PACKAGE_NAME/Products/Debug/PackageFrameworks/PACKAGE_NAME_63097C4A372B9C87_PackageProduct.framework/PACKAGE_NAME_63097C4A372B9C87_PackageProduct' (mach-o file, but is an incompatible architecture (have 'arm64', need 'arm64e')), 'PATH_TO_DERIVED_DATA/Build/Intermediates.noindex/Previews/macos/PACKAGE_NAME/Products/Debug/PACKAGE_NAME_63097C4A372B9C87_PackageProduct.framework/Versions/A/PACKAGE_NAME_63097C4A372B9C87_PackageProduct' (no such file), 'PATH_TO_DERIVED_DATA/Build/Intermediates.noindex/Previews/macos/PACKAGE_NAME/Products/Debug/PackageFrameworks/PACKAGE_NAME_63097C4A372B9C87_PackageProduct.framework/Versions/A/PACKAGE_NAME_63097C4A372B9C87_PackageProduct' (mach-o file, but is an incompatible architecture (have 'arm64', need 'arm64e')), '/System/Volumes/Preboot/Cryptexes/OSPATH_TO_DERIVED_DATA/Build/Intermediates.noindex/Previews/macos/PACKAGE_NAME/Products/Debug/PackageFrameworks/PACKAGE_NAME_63097C4A372B9C87_PackageProduct.framework/Versions/A/PACKAGE_NAME_63097C4A372B9C87_PackageProduct' (no such file), 'PATH_TO_DERIVED_DATA/Build/Intermediates.noindex/Previews/macos/PACKAGE_NAME/Products/Debug/PackageFrameworks/PACKAGE_NAME_63097C4A372B9C87_PackageProduct.framework/Versions/A/PACKAGE_NAME_63097C4A372B9C87_PackageProduct' (mach-o file, but is an incompatible architecture (have 'arm64', need 'arm64e'))) I don't remember ever having this problem. The arm64 vs arm64e makes no sense to me - why would Xcode get that wrong... and only for previews? I've tried restarting, deleting derived data, the usual rain dances. Any ideas?
Posted
by Aurelian.
Last updated
.
Post not yet marked as solved
1 Replies
215 Views
I've been trying to follow the "Supporting Continuity Camera in Your Mac App" article to implement the "Import from iPhone or iPad" menu for my MacOS app. I've been able to replicate most of the article in a test AppKit application but cannot do the same in my SwiftUI application. I'm not sure how to get the "NSMenuItemImportFromDeviceIdentifier" identifier into a SwiftUI Menu or create a NSMenu with a NSMenuItem for a SwiftUI app. I'm also not sure how to handle receiving the image in the SwiftUI environment. Any advice you might have is appreciated. Thanks!
Posted Last updated
.
Post not yet marked as solved
0 Replies
115 Views
Environment: Xcode 15.3.0. MacOS 14.4.1 (23E224) Depl. Target: iOS 17.2 Supported Destinations: iPhone Notes: Using SwiftData. Shared code in the Persistency library. Hello everyone, I am writing here after really trying everything I can to understand what is going on. I have a widget bundle composed by two different widgets, defined as following: import WidgetKit import SwiftUI import SwiftData @main struct MyWidgetBundle: WidgetBundle { @WidgetBundleBuilder var body: some Widget { MyWidget() MylMediumWidget() } } They have 2 different providers (since they need different data). The are then defined as following: import SwiftUI import WidgetKit import Persistency import SwiftData struct MyMediumWidget: Widget { let kind: String = "MyStatus" var body: some WidgetConfiguration { StaticConfiguration(kind: kind, provider: MyEntryProvider()) { entry in MyMediumWidgetView(entry: entry) .containerBackground(Color.Theme.background, for: .widget) } .supportedFamilies([.systemMedium, .systemLarge]) .configurationDisplayName("My Reminder Medium") .description("Bla bla bla") } } And import WidgetKit import SwiftUI import Persistency struct MyWidget: Widget { let kind: String = "MyStatus" var body: some WidgetConfiguration { StaticConfiguration(kind: kind, provider: SmallEntryProvider()) { entry in MyWidgetGroup(entry: entry) .containerBackground(Color.Theme.background, for: .widget) } .supportedFamilies([.systemSmall, .accessoryCircular]) .configurationDisplayName("My Reminder Small") .description("Bla bla 2") } } struct ActiveMealWidgetGroup: View { var entry: SmallEntryProvider.Entry @Environment(\.widgetFamily) var family var body: some View { switch family { case .systemSmall: MySmallWidgetView(entry: entry) case .accessoryCircular: MyAcessoryCircularWidgetView(entry: entry) default: Text("Unsupported size") } } } Note: They belong to 1 single Widget Extension for iOS. For some reason I have VERY strange behaviors in widgets with the following code. Example: When I insert the medium size, it is randomly removed from the home screen. For example, I add the small and the medium. After 3h, the medium is gone. If I try to add the widgets in mac os (readying from phone, the app is only for iOS), only the small appears. No medium and large are shown. If I try to compile the widget scheme selecting systemLarge in the xcode argument, I have an error saying: "Request widget family (systemLarge) is not supported by this widget kind (MyStatus)" UserInfo={NSLocalizedDescription=Request widget family (systemLarge) is not supported by this widget kind (MyStatus)}} What is going on? Seems my widgets are really wrongly configured, but I can't see where the issue can be. Hope someone can help me. Best Regards
Posted Last updated
.
Post not yet marked as solved
0 Replies
72 Views
Hi, By default when selecting an item from a list in details panel it doesn't close how to make it close or hide by default ? Kindest Regards
Posted Last updated
.
Post not yet marked as solved
0 Replies
85 Views
Hello everyone, I have a SwiftUI application with a view containing a MapKit map as UIViewRepresentable. I'm experience the following issue with regionDidChangeAnimated that seems related to MapKit itself as I was able to reproduce it also on another application I'm developing. The problem is that regionDidChangeAnimated is not getting called when zooming in or out, but it's getting called for other gestures, like panning and moving the map. This is what I noticed: I zoom in/out on the map regionWillChangeAnimated is called I release my fingers from the map regionDidChangeAnimated is NOT called If I move a bit the map -> regionDidChangeAnimated is called ( for the previous touch ), then regionWillChangeAnimated related to the new touch is called, regionDidChangeAnimated for the new touch is called. So it looks like when zooming in/out, regionDidChangeAnimated is lagging and not called until a new touch happens. Did you ever experienced this behavior? Thank you in advance for your support
Posted Last updated
.
Post not yet marked as solved
0 Replies
85 Views
I'm developing an Apple TV OS app using SwiftUI. I'm encountering an issue with the color of the tab item. I want the color of the tab item to turn green when focused; for instance, when the tab item is selected, its background color should be green. Below is my current code, but it's not working. I've tried several other approaches, but none have worked. struct ContentView: View { @State private var selectedTab = 0 var body: some View { ZStack(alignment: .topLeading){ TabView(selection: $selectedTab) { HomeView() .tabItem { AppColors.gradientColor1 Label("Home", image: "home-dash") } .tag(0) ProductsView() .tabItem { Label("Products", image: "open box-search") } .tag(1) SearchView() .tabItem { Label("Search", image: "search") } .tag(2) } .accentColor(Color.green) .background(.black) Image("amazontabbarlogo") } } }
Posted
by Rajatalha.
Last updated
.
Post not yet marked as solved
0 Replies
113 Views
It seems like this may have been an issue for a while based on what I've seen, but I have added a toolbar item to a textfield keyboard and it doesn't show. The only way I can get it to show is by opening the keyboard, typing something, closing the keyboard, and then reopening it. Anyone have a workaround for this? It's like Apple purposely wants to make it difficult to close the keyboard. TextField("Something here...", text: $text, axis: .vertical) .multilineTextAlignment(.leading) .toolbar { ToolbarItemGroup(placement: .keyboard, content: { Button("Close") { } }) }
Posted
by Xavier-k.
Last updated
.
Post not yet marked as solved
0 Replies
117 Views
I was following the Swiftui tutorial at section 6 (https://developer.apple.com/tutorials/swiftui/creating-and-combining-views) to use a circle image to create an overlapping effect on the map. Turns out that when using a GeometryReader, the bottom padding was not working at all: VStack{ MapView().frame(height:300) CircleImage() .offset(y: -130) .padding(.bottom, -130) VStack(alignment:.leading){ Text( "Turtle Rock" ) .font( .title ) HStack { Text( "Joshua Tree National Park" ) .font( .subheadline ) Spacer() Text( "California" ) .font( .subheadline ) } }.padding(/*@START_MENU_TOKEN@*/10/*@END_MENU_TOKEN@*/) } This is the code for the CicleImage view: GeometryReader(content: { geometry in let _ = print( geometry.size.width ) AsyncImage( url: URL( string: "https://cms.rationalcdn.com/v3/assets/blteecf9626d9a38b03/bltf5486c52361f2012/6144fafd39dff133fc23de9f/img-ios.png" ) ) .frame(width: geometry.size.width) .clipShape( Circle() ).overlay{ Circle().stroke( .white, lineWidth: 4 ) }.shadow( radius: 7 ) })
Posted
by miguelg97.
Last updated
.
Post marked as solved
1 Replies
127 Views
Hello everyone, I'm just getting started with Swift and I'm in a bit of a knot here. Code below: `if codeSent { TextField("6 Digit Code", text: $code) Divider() Button("Verify") { print("verify...") if code.count == 6 { cloud(fun: "customSmsAuth", cloudData: [ "code": code, "phoneNumber": phoneNumber ], completion: { resData in let res = resData["res"] as? Int if res == 1 { let customToken = resData["customToken"] Auth.auth().signIn(withCustomToken: customToken) { user, error in } } else { print("An error occured...") } }) } else { print("invalid code...") } }.padding() }` `else { HStack { Button("+26") { print("phone code...") } TextField("Phone Number", text: $phoneNumber) } Divider() Button("Send Code") { print("send code...") if phoneNumber.count == 10 { cloud(fun: "sendSms", cloudData: ["phoneNumber" : "+26"+phoneNumber], completion: { resData in let res = resData["res"] as? Int if res == 1 { codeSent = true } else { print("An error occured...") } }) } else { print("Invalid phone number...") } print(phoneNumber) }.padding() }` I'm trying to setup a simple phone based authentication with firebase. Any pointer where I'm going wrong will be appreciated. Thanks.
Posted Last updated
.
Post not yet marked as solved
2 Replies
200 Views
Hello. I've been looking all over this forum and stack and done some internet searches but unfortunately have found nothing to assist in fixing an error I'm receiving on my project in Xcode. Every view shows an error identical to the one shown above, only with that specific file name displayed instead. When I go to fix the error, this is the error detail displayed: == PREVIEW UPDATE ERROR: LinkDylibError: Failed to build TabBar.swift Linking failed: linker command failed with exit code 1 (use -v to see invocation) ld: warning: search path '/Applications/Xcode.app/Contents/SharedFrameworks-iphonesimulator' not found ld: unsupported mach-o filetype (only MH_OBJECT and MH_DYLIB can be linked) in '/Users/brycemchose/Library/Developer/Xcode/DerivedData/Service_Square_App-dnblqgabcrxprhaizjtkcvouyzln/Build/Intermediates.noindex/Previews/iphonesimulator/Service Square App/Products/Debug-iphonesimulator/Service Square.app/Service Square' clang: error: linker command failed with exit code 1 (use -v to see invocation) Note that I can run the app successfully to a simulator or to my iPhone, but cannot see the preview within the Xcode canvas. I've been blindly developing the last two app updates, pushing the changes to the simulator and then tweaking the code based on the simulated version. I can keep doing this for a little while but it is significantly slower and more difficult, especially to fix small bugs and make tiny changes, so I'd really like to see if anyone has an idea for how I can get the preview back to being properly displayed. I'm brand new to this whole thing and have no idea how to fix this issue, so I'd be really grateful if someone with more experience could offer some suggestions! Thanks in advance! :)
Posted Last updated
.
Post marked as solved
2 Replies
125 Views
Hi everyone I'm new to swiftui and I'm trying to understand the reason that allows swiftui to call a VStack or any other container view without parentheses as in: struct ContentView: View { var body: some View { VStack { Text("sth"); } } } After looking into the swift docs, it was clear as in any other programming language that instantiating a class/structure is made by calling the entity with its parentheses, an even passing some parameters if possible. Isn't should be the case for placing view components in the body computer property? So far my mind keeps telling me that the syntax should follow this convention struct ContentView: View { var body: some View { VStack() { Text("sth"); } } } At which concept should I look into for further clarifications All the best.
Posted
by miguelg97.
Last updated
.
Post not yet marked as solved
0 Replies
103 Views
I'm having issues with a Lazyvgrid displaying images after the screen orientation changes ( either from horizontal to portrait, or the reverse ) What happens is the images are not sized correctly. If 2 column , I see 1/3 of column 1 and the image in column 2 takes 2/3 of the screen width. Similar issues with 3 or 6 column layout. The Lazyvgrid is inside a ScrollView and thats inside a Tabview. I'v tried to trick an update by changing the column layout, the content mode (fit/fill) of the images, etc. but so far nothing has worked. Any suggestions ?, anyway to invalidate a lazyvgrid and have swiftui rebuild it ? Thanks.
Posted Last updated
.
Post not yet marked as solved
2 Replies
395 Views
I have created a tip with a parameter (Bool) I have tried to set it to true in a sheet which is presented modally over the view which should present the popover tip. After the sheet gets dismissed the popover tip is never presented. If I restart the app, the popover tip appears. Is there any way to trigger the presentation of a popover tip manually? I have created a little demo app to demonstrate my problem: Setup TipKit on app start: import SwiftUI import TipKit @main struct TipKitDemoApp: App { var body: some Scene { WindowGroup { ContentView() .task { try? Tips.configure() } } } } Simple tip: import Foundation import TipKit struct DemoTip: Tip { @Parameter static var enabled: Bool = false var title: Text { Text("Demo Tip") } var rules: [Rule] { [ #Rule(Self.$enabled) { $0 == true } ] } } Content view which includes the popover tip and displays the sheet where the tip can be enabled: import SwiftUI struct ContentView: View { @State private var presentDetail = false let demoTip = DemoTip() var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) Text("Hello, world!") .popoverTip(demoTip) Button("Present Details") { presentDetail.toggle() } } .padding() .sheet(isPresented: $presentDetail) { DetailView() } } } In the detail view the tip gets enabled, but if I dismiss this view, the tip only appears after I restart the app: import SwiftUI struct DetailView: View { @Environment(\.dismiss) private var dismiss var body: some View { Button("Enable demo tip") { DemoTip.enabled = true } Button("Dismiss") { dismiss() } } }
Posted
by patrick.
Last updated
.