skip to Main Content

In my legacy code base with public Xcode 15.0, I can’t preview any UIKit views with the new #Preview macro

import SwiftUI

#Preview {
    let uiView = UIView()

    return uiView
}

The canvas fails to load preview with failure diagnostic
Compiling failed: return expression of type 'UIView' does not conform to 'View'

2

Answers


  1. I can’t build too..

    the same error: Compiling failed: return expression of type ‘UIButton’ does not conform to ‘View’

    Login or Signup to reply.
  2. I find that restricting this one-statement preview to iOS 17 works:

    @available(iOS 17, *)
    #Preview {
        return UIView()
    }
    

    However, this two-statement preview still does not work:

    @available(iOS 17, *)
    #Preview {
        let uiView = UIView()
        return uiView // 🛑 Value of optional type 'UIView?' must be unwrapped to a value of type 'UIView'
    }
    

    To get the two-statement preview to work, I have to make the variable type explicit:

    @available(iOS 17, *)
    #Preview {
        let uiView: UIView = UIView()
        return uiView
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search