Photo by John Lockwood on Unsplash

Xcode offers a possibility to create a document-based application. In this case, you’ll get a project setup where everything is working fine.

However, if you do not want a document-based application, but work with documents anyway — what to do then? As I experienced, this is somehow difficult, and I’d like to share some results with you.

When starting with a “normal” application project, the SwiftUI frame created by Xcode looks like this:

WindowGroup("") { ContentView() }

With a document-based project, there would be code like this:

DocumentGroup(newDocument: SomeDocument()) { file in
ContentView(document: file.$document) }

Xcode, in this case, creates…

While tuist is an extremely useful tool, the documentation is missing some showcases that illustrate in which ways workspaces can be set up. The default project that can be created with tuist itself just creates a workspace, where the various targets are folders below.

However, when thinking of frameworks it’d be nice to have an Xcode workspace where each framework is an Xcode project on its own. It took me some efforts to figure out how this can be achieved. This video from Pedro Buendia delivered the final clue, and in the end, it’s pretty simple.

So, let me explain…

Photo by Abraham Barrera on Unsplash

Some time ago, I struggled with controlling the App startup process, in order to achieve a defined setup during test execution — for instance, not to have the default database active.

As a newbie to SwiftUI, the solution may not be obvious at first sight. However, because it’s pretty simple, I’d like to share with you here.

Usually, you have one entry point in SwiftUI. It can be recognized by the @main directive:

@main struct AppMain {...}

This directive tells SwiftUI that this shall be the first code to be executed (after some internal stuff, of course).

We can now…

Photo by American Public Power Association on Unsplash

Being on the way of working with TCA in a potentially large application, the benefits of using TCA become more and more obvious in a variety of scopes.

In this article, I’d like to share my experience in “Thinking TCA” by building a small component that presents a Form row that can be tapped; when tapped, it expands and shows a picker for a set of values; after picking a value, the row display is updated. And the row can be collapsed, certainly…

A very subjective view on a change of strategy

Preface: It is not so easy to identify a solution that fits a customer’s needs. If and when you succeeded by establishing a Jira/Confluence/Bitbucket environment that works perfectly well, it is even more frustrating if something happens like it did some days ago, knowing that the customer will never accept that. From many comments I read throughout the last days, it seems that this frustration is shared by many, so I decided to write this small and very subjective article.

Jira, Confluence, Bitbucket — tools used by many. Several companies I’ve…

An introductory view of my first experience

Photo by Przemyslaw Marczynski on Unsplash

(Be warned: This is long stuff, and it’s not complete code. It’s more of a journey into concepts and usage, so it’ll take you some time.)

There seems to a new source of hype growing. While iOS/macOS architectures were mainly driven by MVC, MVVM, or Clean Swift (or others) up until now, SwiftUI, introduced two years ago, sets a different paradigm, where many of these architectures don’t perfectly fit in.

Over the years, we’ve experimented with a variety of approaches in order to find the right one for our application, which needs a heavy rework due to architectural and therefore…

Again, I ran into a problem with Xcode that is not too obvious to solve. So I’d like to share my experience with you, so that you can prevent this situation.

The situation: You’re starting tests, and you get a result like this:

No update of the test result indicators — just black diamonds.

Well, I tried several searches, without a result. Nothing helped. The diamonds remained black.

Then, I remembered a similar problem long time ago with a different codebase (the above appeared with a new project I set up).

And I got a clue what was happening.


Photo by Marija Zaric on Unsplash

Although the TextField provides several standard features, you might want to have a floating label as shown above.

How do you do this with SwiftUI?

Jump to different points in your list

Photo by Glenn Carstens-Peters on Unsplash.

Using a SwiftUI list is a convenient way to use all the auto-mechanisms to insert, remove, or move rows.

However, if you add a new entry, there is no official way to scroll to the bottom of the list where the new entry was added. So, I tried to find a solution. You’ll find a couple of questions on Stack Overflow but no real nice solution (I did not want to replace the list with a wrapped UITableView).

By chance, I found a library called Introspect that gives access to most of the UIKit stuff behind the SwiftUI elements.


Note 19-mar-2020: In the meantime, I went much deeper into the question how a scrollable tab view with animations can be realized using pure SwiftUI. I came up with a solution that is published on GitHub.

While the solution described in my previous article is working pretty well for the displayed tabs, it has a problem when the “More…” tab is used and a view controller from there is selected. In this case, the didSelect delegate function will not be called.

I’ll describe here a modification to the above solution that is also able to handle that situation.

ViewControllers instead of TabItems

First, we…

Gerhard Schneider

Helping companies and humans to evolve, and trying to be agile in an own product development.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store