Introspect underlying UIKit components from SwiftUI

Overview

Introspect for SwiftUI

CircleCI_Status  GithubCI_Status Siteline_Badge Quintschaf_Badge

Introspect allows you to get the underlying UIKit or AppKit element of a SwiftUI view.

For instance, with Introspect you can access UITableView to modify separators, or UINavigationController to customize the tab bar.

How it works

Introspect works by adding a custom IntrospectionView to the view hierarchy, then looking into the UIKit hierarchy to find the relevant view.

For instance, when introspecting a TextField, it will:

  • Add IntrospectionView as an overlay of TextField
  • Get the view host of the introspection view (which is alongside the view host of the UITextField)
  • Get the previous sibling containing UITextField

Please note that this introspection method might break in future SwiftUI releases. Future implementations might not use the same hierarchy, or might not use UIKit elements that are being looked for. Though the library is unlikely to crash, the .introspect() method will not be called in those cases.

Usage in production

Introspect is meant to be used in production. It does not use any private API. It only inspects the view hierarchy using publicly available methods. The library takes a defensive approach to inspecting the view hierarchy: there is no hard assumption that elements are laid out a certain way, there is no force-cast to UIKit classes, and the introspect() methods are simply ignored if UIKit views cannot be found.

Install

SwiftPM

https://github.com/siteline/SwiftUI-Introspect.git

Cocoapods

pod 'Introspect'

Introspection

Implemented

SwiftUI UIKit AppKit Introspect
NavigationView (StackNavigationViewStyle) UINavigationController N/A .introspectNavigationController()
NavigationView (DoubleColumnNavigationViewStyle) UISplitViewController N/A .introspectSplitViewController()
Any embedded view UIViewController N/A .introspectViewController()
ScrollView UIScrollView NSScrollView .introspectScrollView()
List UITableView NSTableView .introspectTableView()
View in List UITableViewCell NSTableCellView introspectTableViewCell()
TabView UITabBarController NSTabView .introspectTabBarController() (iOS)
.introspectTabView() (macOS)
TextField UITextField NSTextField .introspectTextField()
Toggle UISwitch NSButton .introspectSwitch() (iOS)
.introspectButton() (macOS)
Slider UISlider NSSlider .introspectSlider()
Stepper UIStepper NSStepper .introspectStepper()
DatePicker UIDatePicker NSDatePicker .introspectDatePicker()
Picker (SegmentedPickerStyle) UISegmentedControl NSSegmentedControl .introspectSegmentedControl()
Button N/A NSButton .introspectButton()
ColorPicker UIColorWell NSColorWell .introspectColorWell()
TextEditor UITextView NSTextView .introspectTextView()

Missing an element? Please create an issue. As a temporary solution, you can implement your own selector.

Cannot implement

SwiftUI Affected Frameworks Why
Text UIKit, AppKit Not a UILabel / NSLabel
Image UIKit, AppKit Not a UIImageView / NSImageView
Button UIKit Not a UIButton

Examples

List

List {
    Text("Item 1")
    Text("Item 2")
}
.introspectTableView { tableView in
    tableView.separatorStyle = .none
}
.introspectTableViewCell { cell in
    let backgroundView = UIView()
    backgroundView.backgroundColor = .clear
    cell.selectedBackgroundView = backgroundView
}

ScrollView

ScrollView {
    Text("Item 2")
}
.introspectScrollView { scrollView in
    scrollView.refreshControl = UIRefreshControl()
}

NavigationView

NavigationView {
    Text("Item 2")
    .introspectNavigationController { navigationController in
        navigationController.navigationBar.backgroundColor = .red
    }
}

TextField

TextField("Text Field", text: $textFieldValue)
.introspectTextField { textField in
    textField.layer.backgroundColor = UIColor.red.cgColor
}

Implement your own selector

Missing an element? Please create an issue.

In case Introspect doesn't support the SwiftUI element that you're looking for, you can implement your own selector. For example, to look for a UITextField:

extension View {
    public func introspectTextField(customize: @escaping (UITextField) -> ()) -> some View {
        return inject(UIKitIntrospectionView(
            selector: { introspectionView in
                guard let viewHost = Introspect.findViewHost(from: introspectionView) else {
                    return nil
                }
                return Introspect.previousSibling(containing: UITextField.self, from: viewHost)
            },
            customize: customize
        ))
    }
}

You can use any of the following methods to inspect the hierarchy:

  • Introspect.findChild(ofType:in:)
  • Introspect.findChildUsingFrame(ofType:in:from:)
  • Introspect.previousSibling(containing:from:)
  • Introspect.nextSibling(containing:from:)
  • Introspect.findAncestor(ofType:from:)
  • Introspect.findHostingView(from:)
  • Introspect.findViewHost(from:)

Releasing

  • Increment version number:
$ bundle exec fastlane run increment_version_number bump_type:minor # major|minor|patch
  • Update changelog with new version
  • Bump version in Introspect.podspec
  • Commit and push changes
  • Tag new version:
$ git tag -a <VERSION> -m "<MESSAGE>"
$ git push origin --tags
  • Push to cocoapods trunk:
$ bundle exec pod trunk push .
Comments
  • TextField.introspectTextField not calling

    TextField.introspectTextField not calling

    XCode 11.3, new project, code like this:

    TextField(
                            hasTags ? "" : self.placeholder,
                            text: self.$searchText,
                            onEditingChanged: self.handleEditingChanged,
                            onCommit: {
                                print("onCommit")
                            }
                        )
                            .introspectTextField { textField in
                                print("we got a text field here \(textField)")
                        }
    

    When I run it works as expected, but we got a text field here never logs/runs.

    bug 
    opened by natew 21
  • Swift 5.2 compiler barfs on use of .introspectTextField

    Swift 5.2 compiler barfs on use of .introspectTextField

    This is really just FYI, since it's likely to be a compiler bug.

    When I use Introspect in one of my views, I'm getting a segmentation fault when I build in release, using Xcode 11.4b2.

    Removing the use of .introspectTextField is enough to fix it.

    Stack trace included below. Note that the output is a little confusing, and at first glance looks like it's related to the warning near the top. I don't think that's the case.

    Showing All Messages
    CompileSwift normal x86_64 (in target 'ActionStatusMobile' from project 'ActionStatus')
        cd /Users/developer/Projects/ActionStatus
        /Applications/Xcode11.4b2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Model/Model.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusMobile/MobileApplication.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/SceneDelegate.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Application.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/EditView.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusMobile/DocumentPickerViewController.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/WorkflowGenerator.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/SparkleUpdater.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Model/Option.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/ComposeView.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/SparkleView.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Model/Repo.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Model/Job.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/ContentView.swift -supplementary-output-file-map /var/folders/zp/khj_8k6909d9m4y7wjljl41h0000gp/T/supplementaryOutputs-269f9d -target x86_64-apple-ios13.2-macabi -enable-objc-interop -stack-check -sdk /Applications/Xcode11.4b2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -I /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/BuildProductsPath/Release-maccatalyst -F /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/BuildProductsPath/Release-maccatalyst -Fsystem /Applications/Xcode11.4b2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/iOSSupport/System/Library/Frameworks -g -module-cache-path /Users/developer/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity=checked -O -serialize-debugging-options -Xcc -working-directory -Xcc /Users/developer/Projects/ActionStatus -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Action\ Status-generated-files.hmap -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Action\ Status-own-target-headers.hmap -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Action\ Status-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Action\ Status-project-headers.hmap -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/BuildProductsPath/Release-maccatalyst/include -Xcc -isystem -Xcc /Applications/Xcode11.4b2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/iOSSupport/usr/include -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/DerivedSources-normal/x86_64 -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/DerivedSources/x86_64 -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/DerivedSources -import-objc-header /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Resources/BridgingHeader.h -pch-output-dir /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/PrecompiledHeaders -module-name ActionStatus -num-threads 12 -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/Model.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/MobileApplication.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/SceneDelegate.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/Application.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/EditView.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/DocumentPickerViewController.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/WorkflowGenerator.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/SparkleUpdater.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/Option.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/ComposeView.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/SparkleView.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/Repo.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/Job.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/ContentView.o
    
    /Users/developer/Projects/ActionStatus/Sources/ActionStatusMobile/MobileApplication.swift:12:8: warning: implicit import of bridging header 'BridgingHeader.h' via module 'SparkleBridgeClient' is deprecated and will be removed in a later version of Swift
    import SparkleBridgeClient
           ^
    Stack dump:
    0.	Program arguments: /Applications/Xcode11.4b2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Model/Model.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusMobile/MobileApplication.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/SceneDelegate.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Application.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/EditView.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusMobile/DocumentPickerViewController.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/WorkflowGenerator.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/SparkleUpdater.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Model/Option.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/ComposeView.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/SparkleView.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Model/Repo.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Model/Job.swift /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/ContentView.swift -supplementary-output-file-map /var/folders/zp/khj_8k6909d9m4y7wjljl41h0000gp/T/supplementaryOutputs-269f9d -target x86_64-apple-ios13.2-macabi -enable-objc-interop -stack-check -sdk /Applications/Xcode11.4b2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -I /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/BuildProductsPath/Release-maccatalyst -F /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/BuildProductsPath/Release-maccatalyst -Fsystem /Applications/Xcode11.4b2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/iOSSupport/System/Library/Frameworks -g -module-cache-path /Users/developer/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -swift-version 5 -enforce-exclusivity=checked -O -serialize-debugging-options -Xcc -working-directory -Xcc /Users/developer/Projects/ActionStatus -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Action Status-generated-files.hmap -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Action Status-own-target-headers.hmap -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Action Status-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Action Status-project-headers.hmap -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/BuildProductsPath/Release-maccatalyst/include -Xcc -isystem -Xcc /Applications/Xcode11.4b2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/iOSSupport/usr/include -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/DerivedSources-normal/x86_64 -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/DerivedSources/x86_64 -Xcc -I/Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/DerivedSources -import-objc-header /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Resources/BridgingHeader.h -pch-output-dir /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/PrecompiledHeaders -module-name ActionStatus -num-threads 12 -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/Model.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/MobileApplication.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/SceneDelegate.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/Application.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/EditView.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/DocumentPickerViewController.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/WorkflowGenerator.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/SparkleUpdater.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/Option.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/ComposeView.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/SparkleView.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/Repo.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/Job.o -o /Users/developer/Library/Developer/Xcode/DerivedData/ActionStatus-eyxiiohnmopaeecoqfsepoodpvxl/Build/Intermediates.noindex/ArchiveIntermediates/ActionStatusMac/IntermediateBuildFilesPath/ActionStatus.build/Release-maccatalyst/ActionStatusMobile.build/Objects-normal/x86_64/ContentView.o 
    1.	Apple Swift version 5.2 (swiftlang-1103.0.25.1 clang-1103.2.32.5)
    2.	While emitting SIL for getter for body (at /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/EditView.swift:68:9)
    3.	While silgen emitFunction SIL function "@$s12ActionStatus8EditViewV4bodyQrvg".
     for getter for body (at /Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/EditView.swift:68:9)
    4.	While silgen closureexpr SIL function "@$s12ActionStatus8EditViewV4bodyQrvg7SwiftUI05TupleD0VyAE7SectionVyAE05EmptyD0VAGyAE6HStackVyAGyAE4TextV_AE0D0P10IntrospectE010introspectL5Field9customizeQrySo06UITextO0Cc_tFQOyAE15ModifiedContentVyAqAE12nameOrgStyleQryFQOyAE0lO0VyAOG_Qo_AA11ClearButtonVG_Qo_tGG_AMyAGyAO_A4_tGGA9_AMyAGyAO_AXyAqAE010branchListV0QryFQOyA0__Qo_A3_GtGGtGAKG_AIyAkGyAMyAGyAO_AOtGG_AMyAGyAO_AoE6SpacerVAE0X0Vy0F12UIExtensions11SystemImageVGtGGA28_tGAKGtGyXEfU_".
     for expression at [/Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/EditView.swift:69:14 - line:151:13] RangeText="{
                Section {
                    HStack {
                        Text("Name")
                            .font(.callout)
                            .bold()
                        TextField("github repo name", text: $name)
                            .nameOrgStyle()
                            .modifier(ClearButton(text: $name))
                            .introspectTextField { textField in
                                textField.becomeFirstResponder()
                            }
                    }
                    
                    HStack {
                        Text("Owner")
                            .font(.callout)
                            .bold()
                        
                        TextField("github user or organisation", text: $owner)
                            .nameOrgStyle()
                            .modifier(ClearButton(text: $owner))
                    }
                    
                    HStack {
                        Text("Workflow")
                            .font(.callout)
                            .bold()
                        
                        TextField("Tests.yml", text: $workflow)
                            .nameOrgStyle()
                            .modifier(ClearButton(text: $workflow))
                    }
    
                    HStack {
                        Text("Branches")
                            .font(.callout)
                            .bold()
                        
                        TextField("comma-separated list of branches (leave empty for default branch)", text: $branches)
                            .branchListStyle()
                            .modifier(ClearButton(text: $branches))
                    }
    
                }
                
                Section {
                    HStack {
                        Text("Workflow File")
                            .font(.callout)
                            .bold()
                        
                        Text("\(trimmedWorkflow).yml")
                    }
    
                    HStack {
                        Text("Repo URL")
                            .font(.callout)
                            .bold()
                        
                        Text("https://github.com/\(trimmedOwner)/\(trimmedName)")
                        
                        Spacer()
                        
                        Button(action: { self.repo.openInGithub(destination: .repo) }) {
                            SystemImage("arrowshape.turn.up.right")
                        }
                    }
                    
                    HStack{
                        Text("Workflow URL")
                            .font(.callout)
                            .bold()
                        
                        Text("https://github.com/\(trimmedOwner)/\(trimmedName)/actions?query=workflow%3A\(trimmedWorkflow)")
                        
                        Spacer()
                        
                        Button(action: { self.repo.openInGithub(destination: .workflow) }) {
                            SystemImage("arrowshape.turn.up.right")
                        }
                    }
                "
    5.	While silgen closureexpr SIL function "@$s12ActionStatus8EditViewV4bodyQrvg7SwiftUI05TupleD0VyAE7SectionVyAE05EmptyD0VAGyAE6HStackVyAGyAE4TextV_AE0D0P10IntrospectE010introspectL5Field9customizeQrySo06UITextO0Cc_tFQOyAE15ModifiedContentVyAqAE12nameOrgStyleQryFQOyAE0lO0VyAOG_Qo_AA11ClearButtonVG_Qo_tGG_AMyAGyAO_A4_tGGA9_AMyAGyAO_AXyAqAE010branchListV0QryFQOyA0__Qo_A3_GtGGtGAKG_AIyAkGyAMyAGyAO_AOtGG_AMyAGyAO_AoE6SpacerVAE0X0Vy0F12UIExtensions11SystemImageVGtGGA28_tGAKGtGyXEfU_A15_yXEfU_".
     for expression at [/Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/EditView.swift:70:21 - line:111:17] RangeText="{
                    HStack {
                        Text("Name")
                            .font(.callout)
                            .bold()
                        TextField("github repo name", text: $name)
                            .nameOrgStyle()
                            .modifier(ClearButton(text: $name))
                            .introspectTextField { textField in
                                textField.becomeFirstResponder()
                            }
                    }
                    
                    HStack {
                        Text("Owner")
                            .font(.callout)
                            .bold()
                        
                        TextField("github user or organisation", text: $owner)
                            .nameOrgStyle()
                            .modifier(ClearButton(text: $owner))
                    }
                    
                    HStack {
                        Text("Workflow")
                            .font(.callout)
                            .bold()
                        
                        TextField("Tests.yml", text: $workflow)
                            .nameOrgStyle()
                            .modifier(ClearButton(text: $workflow))
                    }
    
                    HStack {
                        Text("Branches")
                            .font(.callout)
                            .bold()
                        
                        TextField("comma-separated list of branches (leave empty for default branch)", text: $branches)
                            .branchListStyle()
                            .modifier(ClearButton(text: $branches))
                    "
    6.	While silgen closureexpr SIL function "@$s12ActionStatus8EditViewV4bodyQrvg7SwiftUI05TupleD0VyAE7SectionVyAE05EmptyD0VAGyAE6HStackVyAGyAE4TextV_AE0D0P10IntrospectE010introspectL5Field9customizeQrySo06UITextO0Cc_tFQOyAE15ModifiedContentVyAqAE12nameOrgStyleQryFQOyAE0lO0VyAOG_Qo_AA11ClearButtonVG_Qo_tGG_AMyAGyAO_A4_tGGA9_AMyAGyAO_AXyAqAE010branchListV0QryFQOyA0__Qo_A3_GtGGtGAKG_AIyAkGyAMyAGyAO_AOtGG_AMyAGyAO_AoE6SpacerVAE0X0Vy0F12UIExtensions11SystemImageVGtGGA28_tGAKGtGyXEfU_A15_yXEfU_A6_yXEfU_".
     for expression at [/Users/developer/Projects/ActionStatus/Sources/ActionStatusCommon/Views/EditView.swift:71:24 - line:80:25] RangeText="{
                        Text("Name")
                            .font(.callout)
                            .bold()
                        TextField("github repo name", text: $name)
                            .nameOrgStyle()
                            .modifier(ClearButton(text: $name))
                            .introspectTextField { textField in
                                textField.becomeFirstResponder()
                            "
    0  swift                    0x000000010e34a033 PrintStackTraceSignalHandler(void*) + 51
    1  swift                    0x000000010e3497f0 SignalHandler(int) + 352
    2  libsystem_platform.dylib 0x00007fff63e7342d _sigtramp + 29
    3  swift                    0x0000000109eaa1f0 swift::ProtocolConformanceRef llvm::function_ref<swift::ProtocolConformanceRef (swift::CanType, swift::Type, swift::ProtocolDecl*)>::callback_fn<swift::ReplaceOpaqueTypesWithUnderlyingTypes>(long, swift::CanType, swift::Type, swift::ProtocolDecl*) + 0
    4  swift                    0x000000010a1102e8 (anonymous namespace)::Transform::transform(swift::Lowering::ManagedValue, swift::Lowering::AbstractionPattern, swift::CanType, swift::Lowering::AbstractionPattern, swift::CanType, swift::Lowering::SGFContext) + 12680
    5  swift                    0x000000010a10d148 swift::Lowering::SILGenFunction::emitOrigToSubstValue(swift::SILLocation, swift::Lowering::ManagedValue, swift::Lowering::AbstractionPattern, swift::CanType, swift::Lowering::SGFContext) + 136
    6  swift                    0x000000010a08c896 swift::Lowering::Conversion::emit(swift::Lowering::SILGenFunction&, swift::SILLocation, swift::Lowering::ManagedValue, swift::Lowering::SGFContext) const + 710
    7  swift                    0x000000010a02d91d (anonymous namespace)::ScalarResultPlan::finish(swift::Lowering::SILGenFunction&, swift::SILLocation, swift::CanType, llvm::ArrayRef<swift::Lowering::ManagedValue>&) + 1021
    8  swift                    0x000000010a049558 swift::Lowering::SILGenFunction::emitApply(std::__1::unique_ptr<swift::Lowering::ResultPlan, std::__1::default_delete<swift::Lowering::ResultPlan> >&&, swift::Lowering::ArgumentScope&&, swift::SILLocation, swift::Lowering::ManagedValue, swift::SubstitutionMap, llvm::ArrayRef<swift::Lowering::ManagedValue>, swift::Lowering::CalleeTypeInfo const&, swift::Lowering::ApplyOptions, swift::Lowering::SGFContext) + 1784
    9  swift                    0x000000010a0574cf (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 3951
    10 swift                    0x000000010a0538c7 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 2567
    11 swift                    0x000000010a04f125 (anonymous namespace)::ArgEmitter::emit(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 3685
    12 swift                    0x000000010a04ad93 (anonymous namespace)::ArgEmitter::emitSingleArg(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 163
    13 swift                    0x000000010a05d57e (anonymous namespace)::ArgEmitter::emitPreparedArgs(swift::Lowering::PreparedArguments&&, swift::Lowering::AbstractionPattern) + 238
    14 swift                    0x000000010a05d3f9 (anonymous namespace)::CallSite::emit(swift::Lowering::SILGenFunction&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, (anonymous namespace)::ParamLowering&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::SmallVectorImpl<(anonymous namespace)::DelayedArgument>&, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus) && + 537
    15 swift                    0x000000010a05afab (anonymous namespace)::CallEmission::emitArgumentsForNormalApply(swift::CanTypeWrapper<swift::FunctionType>&, swift::Lowering::AbstractionPattern&, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::Optional<swift::SILLocation>&, swift::CanTypeWrapper<swift::FunctionType>&) + 1179
    16 swift                    0x000000010a0573c8 (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 3688
    17 swift                    0x000000010a0538c7 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 2567
    18 swift                    0x000000010a0a6473 swift::Lowering::SILGenFunction::emitExprInto(swift::Expr*, swift::Lowering::Initialization*, llvm::Optional<swift::SILLocation>) + 131
    19 swift                    0x000000010a12be2d swift::Lowering::SILGenFunction::emitReturnExpr(swift::SILLocation, swift::Expr*) + 845
    20 swift                    0x000000010a1274e6 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 12598
    21 swift                    0x000000010a1244f6 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 326
    22 swift                    0x000000010a0d6faf swift::Lowering::SILGenFunction::emitClosure(swift::AbstractClosureExpr*) + 719
    23 swift                    0x000000010a03f8e4 swift::Lowering::SILGenModule::emitClosure(swift::AbstractClosureExpr*) + 244
    24 swift                    0x000000010a0ba4f8 (anonymous namespace)::RValueEmitter::visitAbstractClosureExpr(swift::AbstractClosureExpr*, swift::Lowering::SGFContext) + 40
    25 swift                    0x000000010a04f72b (anonymous namespace)::ArgEmitter::emit(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 5227
    26 swift                    0x000000010a04ad93 (anonymous namespace)::ArgEmitter::emitSingleArg(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 163
    27 swift                    0x000000010a05d57e (anonymous namespace)::ArgEmitter::emitPreparedArgs(swift::Lowering::PreparedArguments&&, swift::Lowering::AbstractionPattern) + 238
    28 swift                    0x000000010a05d3f9 (anonymous namespace)::CallSite::emit(swift::Lowering::SILGenFunction&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, (anonymous namespace)::ParamLowering&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::SmallVectorImpl<(anonymous namespace)::DelayedArgument>&, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus) && + 537
    29 swift                    0x000000010a05afab (anonymous namespace)::CallEmission::emitArgumentsForNormalApply(swift::CanTypeWrapper<swift::FunctionType>&, swift::Lowering::AbstractionPattern&, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::Optional<swift::SILLocation>&, swift::CanTypeWrapper<swift::FunctionType>&) + 1179
    30 swift                    0x000000010a0573c8 (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 3688
    31 swift                    0x000000010a0538c7 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 2567
    32 swift                    0x000000010a04f125 (anonymous namespace)::ArgEmitter::emit(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 3685
    33 swift                    0x000000010a04ad93 (anonymous namespace)::ArgEmitter::emitSingleArg(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 163
    34 swift                    0x000000010a05d57e (anonymous namespace)::ArgEmitter::emitPreparedArgs(swift::Lowering::PreparedArguments&&, swift::Lowering::AbstractionPattern) + 238
    35 swift                    0x000000010a05d3f9 (anonymous namespace)::CallSite::emit(swift::Lowering::SILGenFunction&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, (anonymous namespace)::ParamLowering&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::SmallVectorImpl<(anonymous namespace)::DelayedArgument>&, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus) && + 537
    36 swift                    0x000000010a05afab (anonymous namespace)::CallEmission::emitArgumentsForNormalApply(swift::CanTypeWrapper<swift::FunctionType>&, swift::Lowering::AbstractionPattern&, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::Optional<swift::SILLocation>&, swift::CanTypeWrapper<swift::FunctionType>&) + 1179
    37 swift                    0x000000010a0573c8 (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 3688
    38 swift                    0x000000010a0538c7 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 2567
    39 swift                    0x000000010a0a6473 swift::Lowering::SILGenFunction::emitExprInto(swift::Expr*, swift::Lowering::Initialization*, llvm::Optional<swift::SILLocation>) + 131
    40 swift                    0x000000010a12be2d swift::Lowering::SILGenFunction::emitReturnExpr(swift::SILLocation, swift::Expr*) + 845
    41 swift                    0x000000010a1274e6 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 12598
    42 swift                    0x000000010a1244f6 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 326
    43 swift                    0x000000010a0d6faf swift::Lowering::SILGenFunction::emitClosure(swift::AbstractClosureExpr*) + 719
    44 swift                    0x000000010a03f8e4 swift::Lowering::SILGenModule::emitClosure(swift::AbstractClosureExpr*) + 244
    45 swift                    0x000000010a0ba4f8 (anonymous namespace)::RValueEmitter::visitAbstractClosureExpr(swift::AbstractClosureExpr*, swift::Lowering::SGFContext) + 40
    46 swift                    0x000000010a04f72b (anonymous namespace)::ArgEmitter::emit(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 5227
    47 swift                    0x000000010a04ad93 (anonymous namespace)::ArgEmitter::emitSingleArg(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 163
    48 swift                    0x000000010a05d57e (anonymous namespace)::ArgEmitter::emitPreparedArgs(swift::Lowering::PreparedArguments&&, swift::Lowering::AbstractionPattern) + 238
    49 swift                    0x000000010a05d3f9 (anonymous namespace)::CallSite::emit(swift::Lowering::SILGenFunction&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, (anonymous namespace)::ParamLowering&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::SmallVectorImpl<(anonymous namespace)::DelayedArgument>&, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus) && + 537
    50 swift                    0x000000010a05afab (anonymous namespace)::CallEmission::emitArgumentsForNormalApply(swift::CanTypeWrapper<swift::FunctionType>&, swift::Lowering::AbstractionPattern&, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::Optional<swift::SILLocation>&, swift::CanTypeWrapper<swift::FunctionType>&) + 1179
    51 swift                    0x000000010a0573c8 (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 3688
    52 swift                    0x000000010a0538c7 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 2567
    53 swift                    0x000000010a04f125 (anonymous namespace)::ArgEmitter::emit(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 3685
    54 swift                    0x000000010a04ad93 (anonymous namespace)::ArgEmitter::emitSingleArg(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 163
    55 swift                    0x000000010a05d57e (anonymous namespace)::ArgEmitter::emitPreparedArgs(swift::Lowering::PreparedArguments&&, swift::Lowering::AbstractionPattern) + 238
    56 swift                    0x000000010a05d3f9 (anonymous namespace)::CallSite::emit(swift::Lowering::SILGenFunction&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, (anonymous namespace)::ParamLowering&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::SmallVectorImpl<(anonymous namespace)::DelayedArgument>&, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus) && + 537
    57 swift                    0x000000010a05afab (anonymous namespace)::CallEmission::emitArgumentsForNormalApply(swift::CanTypeWrapper<swift::FunctionType>&, swift::Lowering::AbstractionPattern&, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::Optional<swift::SILLocation>&, swift::CanTypeWrapper<swift::FunctionType>&) + 1179
    58 swift                    0x000000010a0573c8 (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 3688
    59 swift                    0x000000010a0538c7 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 2567
    60 swift                    0x000000010a0a6473 swift::Lowering::SILGenFunction::emitExprInto(swift::Expr*, swift::Lowering::Initialization*, llvm::Optional<swift::SILLocation>) + 131
    61 swift                    0x000000010a12be2d swift::Lowering::SILGenFunction::emitReturnExpr(swift::SILLocation, swift::Expr*) + 845
    62 swift                    0x000000010a1274e6 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 12598
    63 swift                    0x000000010a1244f6 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 326
    64 swift                    0x000000010a0d6faf swift::Lowering::SILGenFunction::emitClosure(swift::AbstractClosureExpr*) + 719
    65 swift                    0x000000010a03f8e4 swift::Lowering::SILGenModule::emitClosure(swift::AbstractClosureExpr*) + 244
    66 swift                    0x000000010a0ba4f8 (anonymous namespace)::RValueEmitter::visitAbstractClosureExpr(swift::AbstractClosureExpr*, swift::Lowering::SGFContext) + 40
    67 swift                    0x000000010a04f72b (anonymous namespace)::ArgEmitter::emit(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 5227
    68 swift                    0x000000010a04ad93 (anonymous namespace)::ArgEmitter::emitSingleArg(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 163
    69 swift                    0x000000010a05d57e (anonymous namespace)::ArgEmitter::emitPreparedArgs(swift::Lowering::PreparedArguments&&, swift::Lowering::AbstractionPattern) + 238
    70 swift                    0x000000010a05d3f9 (anonymous namespace)::CallSite::emit(swift::Lowering::SILGenFunction&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, (anonymous namespace)::ParamLowering&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::SmallVectorImpl<(anonymous namespace)::DelayedArgument>&, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus) && + 537
    71 swift                    0x000000010a05afab (anonymous namespace)::CallEmission::emitArgumentsForNormalApply(swift::CanTypeWrapper<swift::FunctionType>&, swift::Lowering::AbstractionPattern&, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::Optional<swift::SILLocation>&, swift::CanTypeWrapper<swift::FunctionType>&) + 1179
    72 swift                    0x000000010a0573c8 (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 3688
    73 swift                    0x000000010a0538c7 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 2567
    74 swift                    0x000000010a04f125 (anonymous namespace)::ArgEmitter::emit(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 3685
    75 swift                    0x000000010a04ad93 (anonymous namespace)::ArgEmitter::emitSingleArg(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 163
    76 swift                    0x000000010a05d57e (anonymous namespace)::ArgEmitter::emitPreparedArgs(swift::Lowering::PreparedArguments&&, swift::Lowering::AbstractionPattern) + 238
    77 swift                    0x000000010a05d3f9 (anonymous namespace)::CallSite::emit(swift::Lowering::SILGenFunction&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, (anonymous namespace)::ParamLowering&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::SmallVectorImpl<(anonymous namespace)::DelayedArgument>&, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus) && + 537
    78 swift                    0x000000010a05afab (anonymous namespace)::CallEmission::emitArgumentsForNormalApply(swift::CanTypeWrapper<swift::FunctionType>&, swift::Lowering::AbstractionPattern&, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::Optional<swift::SILLocation>&, swift::CanTypeWrapper<swift::FunctionType>&) + 1179
    79 swift                    0x000000010a0573c8 (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 3688
    80 swift                    0x000000010a0538c7 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 2567
    81 swift                    0x000000010a04f125 (anonymous namespace)::ArgEmitter::emit(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 3685
    82 swift                    0x000000010a04ad93 (anonymous namespace)::ArgEmitter::emitSingleArg(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 163
    83 swift                    0x000000010a05d57e (anonymous namespace)::ArgEmitter::emitPreparedArgs(swift::Lowering::PreparedArguments&&, swift::Lowering::AbstractionPattern) + 238
    84 swift                    0x000000010a05d3f9 (anonymous namespace)::CallSite::emit(swift::Lowering::SILGenFunction&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, (anonymous namespace)::ParamLowering&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::SmallVectorImpl<(anonymous namespace)::DelayedArgument>&, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus) && + 537
    85 swift                    0x000000010a05afab (anonymous namespace)::CallEmission::emitArgumentsForNormalApply(swift::CanTypeWrapper<swift::FunctionType>&, swift::Lowering::AbstractionPattern&, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::Optional<swift::SILLocation>&, swift::CanTypeWrapper<swift::FunctionType>&) + 1179
    86 swift                    0x000000010a0573c8 (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 3688
    87 swift                    0x000000010a0538c7 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 2567
    88 swift                    0x000000010a04f125 (anonymous namespace)::ArgEmitter::emit(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 3685
    89 swift                    0x000000010a04ad93 (anonymous namespace)::ArgEmitter::emitSingleArg(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 163
    90 swift                    0x000000010a05d57e (anonymous namespace)::ArgEmitter::emitPreparedArgs(swift::Lowering::PreparedArguments&&, swift::Lowering::AbstractionPattern) + 238
    91 swift                    0x000000010a05d3f9 (anonymous namespace)::CallSite::emit(swift::Lowering::SILGenFunction&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, (anonymous namespace)::ParamLowering&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::SmallVectorImpl<(anonymous namespace)::DelayedArgument>&, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus) && + 537
    92 swift                    0x000000010a05afab (anonymous namespace)::CallEmission::emitArgumentsForNormalApply(swift::CanTypeWrapper<swift::FunctionType>&, swift::Lowering::AbstractionPattern&, swift::CanTypeWrapper<swift::SILFunctionType>, llvm::Optional<swift::ForeignErrorConvention> const&, swift::ImportAsMemberStatus, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::Optional<swift::SILLocation>&, swift::CanTypeWrapper<swift::FunctionType>&) + 1179
    93 swift                    0x000000010a0573c8 (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 3688
    94 swift                    0x000000010a0538c7 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 2567
    95 swift                    0x000000010a0abe3f swift::ASTVisitor<(anonymous namespace)::RValueEmitter, swift::Lowering::RValue, void, void, void, void, void, swift::Lowering::SGFContext>::visit(swift::Expr*, swift::Lowering::SGFContext) + 22495
    96 swift                    0x000000010a0a6473 swift::Lowering::SILGenFunction::emitExprInto(swift::Expr*, swift::Lowering::Initialization*, llvm::Optional<swift::SILLocation>) + 131
    97 swift                    0x000000010a12be2d swift::Lowering::SILGenFunction::emitReturnExpr(swift::SILLocation, swift::Expr*) + 845
    98 swift                    0x000000010a1274e6 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 12598
    99 swift                    0x000000010a1244f6 swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 326
    100 swift                    0x000000010a0d646f swift::Lowering::SILGenFunction::emitFunction(swift::FuncDecl*) + 1055
    101 swift                    0x000000010a03b9c9 swift::Lowering::SILGenModule::emitFunction(swift::FuncDecl*) + 953
    102 swift                    0x000000010a138cc8 void llvm::function_ref<void (swift::AccessorDecl*)>::callback_fn<(anonymous namespace)::SILGenType::visitAccessors(swift::AbstractStorageDecl*)::'lambda'(swift::AccessorDecl*)>(long, swift::AccessorDecl*) + 24
    103 swift                    0x000000010a138c2c (anonymous namespace)::SILGenType::visitVarDecl(swift::VarDecl*) + 1948
    104 swift                    0x000000010a1357fb (anonymous namespace)::SILGenType::emitType() + 1163
    105 swift                    0x000000010a045f22 swift::ASTVisitor<swift::Lowering::SILGenModule, void, void, void, void, void, void>::visit(swift::Decl*) + 82
    106 swift                    0x000000010a0450ec swift::Lowering::SILGenModule::emitSourceFile(swift::SourceFile*) + 1356
    107 swift                    0x000000010a0471ca swift::SILModule::constructSIL(swift::ModuleDecl*, swift::Lowering::TypeConverter&, swift::SILOptions&, swift::FileUnit*) + 1530
    108 swift                    0x0000000109c16ecb swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 62331
    109 swift                    0x0000000109b87b83 main + 1299
    110 libdyld.dylib            0x00007fff63c7a7fd start + 1
    error: Segmentation fault: 11 (in target 'ActionStatusMobile' from project 'ActionStatus')
    
    opened by samdeane 12
  • Introspector in iOS 14 not working for ScrollView...

    Introspector in iOS 14 not working for ScrollView...

    First of all the specs: iOS 14, Xcode 12.2 beta and Catalina running on my Mac.

    I tried to add a pulltorefresh function to a ScrollView in Swiftui but it doesnt show up. Actually the whohle introspect is never called. I tried a few times and it actually only works if I change it to List, but not with ScrollView like it is shown in the Github example. As I defo need it for ScrollView I need your help. Cheers...

    So this one actually works:

    List { ForEach(0..<100) { _ in Text("hello") } } .introspectScrollView { scrollView in print("Test") scrollView.refreshControl = UIRefreshControl() }

    while this does not:

    ScrollView { ForEach(0..<100) { _ in Text("hello") } } .introspectScrollView { scrollView in print("Test") scrollView.refreshControl = UIRefreshControl() }

    opened by paulo2703 11
  • Navigation bar has large title doesn't work correctly

    Navigation bar has large title doesn't work correctly

    After setting tableView's separator to none, the navigation bar becomes transparent and won't react during scrolling such as shrinking, changing color. Guess changing tableView's property will destroy the scroll delegate somehow.

    bug 
    opened by ribilynn 10
  • Fix: Introspector in iOS 14 not working for ScrollView (#55)

    Fix: Introspector in iOS 14 not working for ScrollView (#55)

    Looks like in iOS 14 the sibling view is the UIScrollView, as opposed to a ViewHost containing a UIScrollView. Added a check to see if the sibling itself is a UIScrollView.

    The iOS 14 SwiftUI ScrollView type is as follows:

    <SwiftUI.HostingScrollView: 0x7fd3ae835200; baseClass = UIScrollView; frame = (84.5 0; 151.5 568); anchorPoint = (0, 0); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x600001de89f0>; layer = <CALayer: 0x60000134e060>; contentOffset: {0, -20}; contentSize: {151.5, 1746.5}; adjustedContentInset: {20, 0, 0, 0}>

    Tested using a simple example app:

    image

    image

    size/S 
    opened by lucastimeless 9
  • Added introspect for scroll view in TabBarView with PageTabViewStyle

    Added introspect for scroll view in TabBarView with PageTabViewStyle

    I created an extension to introspect the horizontal scroll view in a TabBarView with tabViewStyle(PageTabViewStyle().

    This tab view style is Apple's solution for pagination like UIPageViewController. Interesting enough, it actually uses a UICollectionView with an embedded UIScrollView.

    I use this extension to disable horizontal scrolling (similar to scrollView.isScrollEnabled = false) so only programmatic navigation is possible. When horizontal scrolling is disabled, the collection view still bounces vertically, so both views are passed to the customize closure.

    Example:

    import SwiftUI
    import Introspect
    
    @main
    struct DemoApp: App {
    
        @State private var selection = 1
    
        var body: some Scene {
            WindowGroup {
                TabView(selection: $selection) {
                    Button("Go To Page 2", action: {
                        withAnimation {
                            selection = 2
                        }
                    })
                    .tag(1)
                    Button("Go To Page 1", action: {
                        withAnimation {
                            selection = 1
                        }
                    })
                    .tag(2)
                }
                .tabViewStyle(PageTabViewStyle())
                .introspectPagedTabView { collectionView, scrollView in
                    collectionView.isScrollEnabled = false
                    scrollView.isScrollEnabled = false
                }
            }
        }
    }
    
    size/M 
    opened by philprime 8
  • textField.becomeFirstResponder() is reason for bad transition

    textField.becomeFirstResponder() is reason for bad transition

    When I use

     `TextField("onboarding_name_firstname".localized, text: $state.firstName)
                .textFieldStyle(TextFields(.bordered))
                .disableAutocorrection(true)
                .accessibility(identifier: "onboarding_name_firstname")
                .introspectTextField(customize: { textField in
                    textField.becomeFirstResponder()
                })`
    

    on opening this screen it looks like screen was opened twice: one without keyboard, the second with. Commenting string textField.becomeFirstResponder() helps with such transition but off course keyboard is closed

    invalid 
    opened by KonstantinEfimenko 8
  • Does introspect cause memory leak?

    Does introspect cause memory leak?

    @crayment When I use introspect in a struct containing a viewModel, the deinit function in the viewModel never executes. Version: Master branch on github (2022-8-25), I downloaded this to fix #140, but found this issue instead.

    opened by okmyself 6
  • Maintenance status – and call for maintainers

    Maintenance status – and call for maintainers

    I'm currently twiddling my thumbs while waiting for #56 to be merged, so I decided to take a look at the insights.

    The last commit was some README updates in July, and the last actual code change was back in May, before the first iOS 14 beta.

    I was tempted to copy this project's code into my project so that I can fix the problems I was having, but upon reading some of the code, I'm realizing that this is a pretty solid project. It's well-documented, the code is clean, it's written in a safe way, and it's tested. It's just currently suffering from a lack of love.

    I would be happy to fork this repo and take ownership of the library, but I work full-time so I wouldn't always have much time to maintain it.

    Is there someone else who has the availability to take proper ownership of this project? Or is there anyone on the current contributors list who would like to chime in?

    opened by jchitel 6
  • Remove explicit returns to simplify code

    Remove explicit returns to simplify code

    Since Swift 5.1, SE-0255 evolved Swift to have the capability to implicitly return from functions.

    I removed unnecessary explicit returns to improve code readability and simplicity.

    size/M 
    opened by jevonmao 5
  • UISplitViewController Introspection

    UISplitViewController Introspection

    I tried to do this:

    extension View {
        public func introspectSplitViewController(customize: @escaping (UISplitViewController) -> ()) -> some View {
            return inject(UIKitIntrospectionViewController(
                selector: { introspectionView in
                    guard let viewHost = Introspect.findViewHost(from: introspectionView) else {
                        return nil
                    }
                    return Introspect.previousSibling(containing: UISplitViewController.self, from: viewHost)
                },
                customize: customize
            ))
        }
    }
    

    But I got this error: Cannot convert value of type 'UIViewController' to expected argument type 'PlatformView' (aka 'UIView')

    What I am doing wrong?

    opened by a-shatou 5
  • iOS 16 introspectTableView stopped working

    iOS 16 introspectTableView stopped working

    For part of my code related to the pagination implementation I use the following:

    .introspectTableView(customize: { tableView in
    tableView.delegate = viewModel
    })
    

    It looks like for iOS 16 that's not working anymore ...

    opened by SAleksiev 1
  • `.cornerRadius` parent breaks introspection.

    `.cornerRadius` parent breaks introspection.

    Strangely, when you apply a .cornerRadius, even outside in an parent view, the introspection stops working:

    struct Preview: PreviewProvider, View {
        static var previews = Self()
        
        var body: some View {
            VStack {
                ScrollView {
                    Text("Hello world!")
                }
                .introspectScrollView {
                    $0.isScrollEnabled = false
                }
            }
            .background(Color.red)
            .cornerRadius(20)
        }
    }
    

    I expect the "Hello world!" to not be draggable, but it is. The introspection closure is never called.

    opened by lhunath 0
  • Value of type 'Text' has no member 'introspectNavigationController'

    Value of type 'Text' has no member 'introspectNavigationController'

    Screenshot 2022-11-11 at 18 19 51

    After run pod install

    Analyzing dependencies
    Downloading dependencies
    Installing Introspect (0.1.4)
    Generating Pods project
    Integrating client project
    Pod installation complete! There are 15 dependencies from the Podfile and 34 total pods installed.
    

    I still getting error Value of type 'Text' has no member 'introspectNavigationController'

    opened by abinhho 0
  • iOS 16 UIRefreshControl() inside introspectTableView stopped working

    iOS 16 UIRefreshControl() inside introspectTableView stopped working

    Hi,

    I noticed that in the iOS 16 the Refresh Control inside a introspectTableView stopped working. .listStyle(PlainListStyle()) .introspectTableView { tableView in let control = UIRefreshControl() So now when I pull down to refresh nothing happens and no refresh controls appears. In iOS 15 it works ok.

    opened by pbrns 5
  • Possible to introspect the UIScrollView inside the .sheet?

    Possible to introspect the UIScrollView inside the .sheet?

    Hello, I need to disable the scrollView that is automatically added inside every .sheet(). Would it be possible to add the ability to introspect the sheet's scrollview?

    opened by tkafka 0
Releases(0.1.4)
  • 0.1.4(Jan 26, 2022)

    • Added .introspectSplitViewController() on iOS
    • Fixed iPad tests
    • Added iPad to CI
    • Added .introspectColorWell() on iOS and macOS
    • Added .introspectButton() on macOS
    • Fix UITextField with cornerRadius
    • Added .introspectTabView() on macOS

    Thanks to @SplittyDev and @JannThomas from Quintschaf for maintaining the project!

    Source code(tar.gz)
    Source code(zip)
  • 0.1.3(Mar 16, 2021)

    This release brings the following new methods:

    • .introspectTableViewCell()
    • .introspectTextView()

    It also fixes nested ScrollView detection on iOS 14 and macOS 11.

    Finally, we're welcoming @SplittyDev and @JannThomas from Quintschaf as new maintainers of Introspect!

    Source code(tar.gz)
    Source code(zip)
Owner
Siteline
Siteline
A Swift library for documenting, isolating, and testing SwiftUI, UIKIt & AppKit components.

A Swift library for documenting, isolating, and testing SwiftUI, UIKit & AppKit components. Minimal Example An example demonstrated with the Slider ui

Hayden Pennington 9 Dec 15, 2022
A SwiftUI system components and interactions demo app

SwiftUI Kit A SwiftUI system components and interactions demo app based on iOS 14, macOS Big Sur, watchOS 7, and tvOS 14. Use the SwiftUI Kit app to s

Jordan Singer 2k Jan 6, 2023
A collection of missing SwiftUI components

SwiftUIKit A collection of components that will simplify and accelerate your iOS development. Components CurrencyTextField AdaptToKeyboard (not needed

youjinp 239 Nov 18, 2022
NeoPop is CRED's inbuilt library for using NeoPop components in your app

NeoPOP NeoPOP is CRED's inbuilt library for using NeoPOP components in your app. What really is NeoPOP? NeoPOP was created with one simple goal; to cr

CRED 125 Dec 29, 2022
content for Using Combine - notes on learning Combine with UIKit and SwiftUI

SwiftUI-Notes A collection of notes, project pieces, playgrounds and ideas on learning and using SwiftUI and Combine. Changes, corrections, and feedba

Joseph Heck 1.7k Dec 27, 2022
Porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI.

SwiftUI example app: Koober We're porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI and we are sharing the cod

raywenderlich 55 Dec 19, 2022
Movie Database app made with SwiftUI and UIKit

HW4_DogukaanKilicarslan Movie Data Base App made with SwiftUI Movie Database app made with SwiftUI Preview Movie Data Base App : Star Wars Characters

null 1 Oct 20, 2021
A collection of Swift functions, extensions, and SwiftUI and UIKit Views.

J's Helper A collection of Swift functions, extensions, and SwiftUI and UIKit Views. Legend: ?? UIKit ?? SwiftUI ?? Shared Installation In XCode 12 go

Jem Alvarez 3 Oct 1, 2022
UIKit (MVC), Weather App

Weather Simple weather app written on UIKit (MVC) Was used • UITableView • CoreLocation • Lottie Animations • OpenWeatherMap (API) • Author of animate

null 5 Jun 29, 2022
Restaurant App iOs swift Uikit

Restaurant-App Restaurant App iOs swift Uikit if you want to use this app first install CocoPods $ sudo gem install cocopods and then use this comman

Abdorizak Abdalla 1 Oct 16, 2021
Adventures-with-Swift - Building Native iOS Apps with UIKit and SiwftUI 

Adventures with Swift, UIKit, & SwiftUI As I have experience working with React Native and have dabbled a bit with Flutter, I've decided to dive in th

Daniel Stafford 4 Nov 17, 2022
Quotes App - quotes browsing app which is built with Quotable Free API completely in UIKit

Quotes App is quotes browsing app which is built with Quotable Free API completely in UIKit

Mohammed Sulaiman 1 Jan 7, 2023
🎬 Netflix Clone 🔥 Made using UIKit with Swift language.

Made using UIKit with Swift language. Core Data was used as the local database. Tmdb and youtube api were used for the API.

Ferhat İltaş 17 Sep 16, 2022
A package that allows you to easily enable the Xcode canvas to a UIKit view.

UIViewCanvas This package allows you to enable a SwiftUI Xcode canva to a UIView or a entire ViewController. Why? Run emulator everytime you need to t

Wender 14 Jun 9, 2022
Swift UIKit E-Commerce (UgurShopping) No StoryBoard Firebase, FireStore, FirebaseAuth, KingFisher, SwiftEntryKit, ProgressHud, Alamofire UICollectionViewCompositionalLayout, NotificationCenter

Swift UIKit E-Commerce (UgurShopping) No StoryBoard Firebase, FireStore, FirebaseAuth, KingFisher, SwiftEntryKit, ProgressHud, Alamofire UICollectionViewCompositionalLayout, NotificationCenter

Ugur Hamzaoglu 2 Oct 16, 2022
🎲 100% SwiftUI 2.0, classic 2048 game [SwiftUI 2.0, iOS 14.0+, iPadOS 14.0+, macOS 11.0+, Swift 5.3].

swiftui-2048 If you like the project, please give it a star ⭐ It will show the creator your appreciation and help others to discover the repo. ✍️ Abou

Astemir Eleev 174 Dec 17, 2022
A simple SwiftUI Application to demonstrate creation of UI using SwiftUI.

WatchShop_UI A simple SwiftUI Application to demonstrate creation of UI using SwiftUI. How to run the project ? Fork the project. Run the project usin

Shubham Kr. Singh 12 Apr 15, 2022
E-commerce app built in SwiftUI. Built in the course SwiftUI Masterclass in Udemy.

Touchdown-SwiftUI E-commerce app built in SwiftUI. Built in the course SwiftUI Masterclass in Udemy. Main components and concepts used: @EnvironmentOb

Jorge Martinez 5 Aug 18, 2022
A multiplatform SwiftUI project demonstrating various SwiftUI features.

WikiDemo A multiplatform SwiftUI project demonstrating various SwiftUI features, including creating a master-detail interface. It's a multiplatform ve

Swift Dev Journal 6 Oct 17, 2022