Feature/generic ui view introspection (#11)
This commit is contained in:
parent
7b139e0cbf
commit
b26f5cd067
|
@ -385,81 +385,46 @@ extension View {
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Finds a `UITextField` from a `SwiftUI.TextField`
|
/// Finds a `TargetView` from a `SwiftUI.View`
|
||||||
public func introspectTextField(customize: @escaping (UITextField) -> ()) -> some View {
|
public func introspect<TargetView: UIView>(customize: @escaping (TargetView) -> ()) -> some View {
|
||||||
return inject(IntrospectionView(
|
return inject(IntrospectionView(
|
||||||
selector: { introspectionView in
|
selector: { introspectionView in
|
||||||
guard let viewHost = Introspect.findViewHost(from: introspectionView) else {
|
guard let viewHost = Introspect.findViewHost(from: introspectionView) else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return Introspect.previousSibling(containing: UITextField.self, from: viewHost)
|
return Introspect.previousSibling(containing: TargetView.self, from: viewHost)
|
||||||
},
|
},
|
||||||
customize: customize
|
customize: customize
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Finds a `UITextField` from a `SwiftUI.TextField`
|
||||||
|
public func introspectTextField(customize: @escaping (UITextField) -> ()) -> some View {
|
||||||
|
return introspect(customize: customize)
|
||||||
|
}
|
||||||
|
|
||||||
/// Finds a `UISwitch` from a `SwiftUI.Toggle`
|
/// Finds a `UISwitch` from a `SwiftUI.Toggle`
|
||||||
public func introspectSwitch(customize: @escaping (UISwitch) -> ()) -> some View {
|
public func introspectSwitch(customize: @escaping (UISwitch) -> ()) -> some View {
|
||||||
return inject(IntrospectionView(
|
return introspect(customize: customize)
|
||||||
selector: { introspectionView in
|
|
||||||
guard let viewHost = Introspect.findViewHost(from: introspectionView) else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return Introspect.previousSibling(containing: UISwitch.self, from: viewHost)
|
|
||||||
},
|
|
||||||
customize: customize
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Finds a `UISlider` from a `SwiftUI.Slider`
|
/// Finds a `UISlider` from a `SwiftUI.Slider`
|
||||||
public func introspectSlider(customize: @escaping (UISlider) -> ()) -> some View {
|
public func introspectSlider(customize: @escaping (UISlider) -> ()) -> some View {
|
||||||
return inject(IntrospectionView(
|
return introspect(customize: customize)
|
||||||
selector: { introspectionView in
|
|
||||||
guard let viewHost = Introspect.findViewHost(from: introspectionView) else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return Introspect.previousSibling(containing: UISlider.self, from: viewHost)
|
|
||||||
},
|
|
||||||
customize: customize
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Finds a `UIStepper` from a `SwiftUI.Stepper`
|
/// Finds a `UIStepper` from a `SwiftUI.Stepper`
|
||||||
public func introspectStepper(customize: @escaping (UIStepper) -> ()) -> some View {
|
public func introspectStepper(customize: @escaping (UIStepper) -> ()) -> some View {
|
||||||
return inject(IntrospectionView(
|
return introspect(customize: customize)
|
||||||
selector: { introspectionView in
|
|
||||||
guard let viewHost = Introspect.findViewHost(from: introspectionView) else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return Introspect.previousSibling(containing: UIStepper.self, from: viewHost)
|
|
||||||
},
|
|
||||||
customize: customize
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Finds a `UIDatePicker` from a `SwiftUI.DatePicker`
|
/// Finds a `UIDatePicker` from a `SwiftUI.DatePicker`
|
||||||
public func introspectDatePicker(customize: @escaping (UIDatePicker) -> ()) -> some View {
|
public func introspectDatePicker(customize: @escaping (UIDatePicker) -> ()) -> some View {
|
||||||
return inject(IntrospectionView(
|
return introspect(customize: customize)
|
||||||
selector: { introspectionView in
|
|
||||||
guard let viewHost = Introspect.findViewHost(from: introspectionView) else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return Introspect.previousSibling(containing: UIDatePicker.self, from: viewHost)
|
|
||||||
},
|
|
||||||
customize: customize
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Finds a `UISegmentedControl` from a `SwiftUI.Picker` with style `SegmentedPickerStyle`
|
/// Finds a `UISegmentedControl` from a `SwiftUI.Picker` with style `SegmentedPickerStyle`
|
||||||
public func introspectSegmentedControl(customize: @escaping (UISegmentedControl) -> ()) -> some View {
|
public func introspectSegmentedControl(customize: @escaping (UISegmentedControl) -> ()) -> some View {
|
||||||
return inject(IntrospectionView(
|
return introspect(customize: customize)
|
||||||
selector: { introspectionView in
|
|
||||||
guard let viewHost = Introspect.findViewHost(from: introspectionView) else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return Introspect.previousSibling(containing: UISegmentedControl.self, from: viewHost)
|
|
||||||
},
|
|
||||||
customize: customize
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue