Recent articles

Jump to a random post

Handling deeplinks in a SwiftUI app

Updated on: July 7, 2025

Handling deeplinks is an essential feature for lots of apps. Deeplinks help with sharing contents and they allow you to help users jump right to any pages they might be interested in without tapping through your app. In this post we’ll explore how you can set up deeplinks and handle them with SwiftUI’s onOpenURL.

Read post

Using multi-colored icons in iOS 14 with SF Symbols 2

Updated on: September 30, 2020

Apple introduced SF Symbols in iOS 13. SF Symbols allow developers to easily integrate icons in their apps. The SF Symbols icons integrate really well with the default system font, and provide a consistent look throughout the system. In iOS 14, Apple added over 750 new icons to the SF Symbols library for developers to […]

Read post

How to change a UICollectionViewListCell’s separator inset

Updated on: September 30, 2020

In WWDC2020’s session Lists in UICollectionView a slide is shown where a UICollectionViewListCell’s separator inset is updated by assigning a new leading anchor to separatorLayoutGuide.leadingAnchor. Unfortunately, this doesn’t work in when you try to do it. To set the separator inset for a UICollectionViewListCell you can update the leading anchor constraint by overriding updateConstraints in […]

Read post

What’s new with UICollectionView in iOS 14

Updated on: September 30, 2020

Last year, the team that works on UICollectionView shipped massive improvements like compositional layout and diffable data sources. This year, the team went all out and shipped even more amazing improvements to UICollectionView, making UITableView obsolete through the new UICollectionViewCompositionalLayout.list and UICollectionLayoutListConfiguration. This new list layout allows you to create collection views that look and […]

Read post

How to add a custom accessory to a UICollectionViewListCell?

Updated on: September 30, 2020

Apple provides several accessory types that you can use to apply certain affordances to a UICollectionViewListCell. However, sometimes these options don’t suit your needs and you’re looking for something more customizable. To add a custom accessory to a list cell instead of a standard one, you use the .custom accessory type. The initializer for this […]

Read post

How to add accessories to a UICollectionViewListCell?

Updated on: September 30, 2020

In iOS 14 Apple added the ability for developers to create collection views that look and feel like table views, except they are far, far more powerful. To do this, Apple introduced a new UICollectionViewCell subclass called UICollectionViewListCell. This new cell class allows us to implement several tableviewcell-like principles, including accessories. Adding accessories to a […]

Read post

How to add custom swipe actions to a UICollectionViewListCell?

Updated on: January 6, 2022

In iOS 14 Apple added the ability for developers to create collection views that look and feel like table views, except they are far, far more powerful. To do this, Apple introduced a new UICollectionViewCell subclass called UICollectionViewListCell. This new cell class allows us to implement several tableviewcell-like principles, including swipe actions. You can add […]

Read post

Configure collection view cells with UICollectionView.CellRegistration

Updated on: September 30, 2020

In iOS 14 you can use the new UICollectionView.CellRegistration class to register and configure your UICollectionViewCell instances. So no more let cellIdentifier = "MyCell", no more collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) and best of all, you no longer need to cast the cell returned by dequeueReusableCell(withReuseIdentifier:for:) to your custom cell class. Adopting UICollectionView.CellRegistration in your project […]

Read post

@StateObject vs @ObservedObject: understanding the difference

Updated on: July 4, 2025

Views in SwiftUI are thrown away and recreated regularly. When this happens, the entire view struct is initialized all over again. Because of this, any values that you create in a SwiftUI view are reset to their default values unless you’ve marked these values using @State. This means that if you declare a view that […]

Read post

Expand your learning with my books

Practical Combine header image

Learn everything you need to know about Combine and how you can use it in your projects with Practical Combine. It contains:

  • Thirteen chapters worth of content.
  • Playgrounds and sample projects that use the code shown in the chapters.
  • Free updates for future iOS versions.

The book is available as a digital download for just $39.99!

Learn more