Comments (4)
I would be helpful if you posted the actual view structure. From the view type you mentioned I can only assume you have a custom view defined as the view builder. This case has been discussed here, so the .viewBuilder()
call allows you to unwrap the TupleView inside a custom view. I'm not sure how the tap gesture is related to this, so if you can provide the essential part of the view hierarchy I can help further.
from viewinspector.
@asam139 please reopen the ticket if you have any questions.
from viewinspector.
I have the same issue
my structure is as follows
struct MyView: View {
@ObservedObject var data: Data = Data()
internal let inspection = Inspection() //for testing UI
var body: some View {
VStack() {
Spacer()
if data.isThis {
AnyView(SampleView(text: "test1", colour: .gray))
Spacer().frame(height: 10)
}
if data.isThis2 {
AnyView(SampleView(text: "test2", colour: .green))
Spacer().frame(height: 10)
}
if !data.isOnline {
AnyView(SampleView(text: "test3", colour: .red))
}
Spacer().frame(height: 55)
}.onReceive(inspection.notice) { self.inspection.visit(self, $0) } //for testing UI
}
}
so :let text = try view.vStack().anyView(3).view(SampleView.self).text().string()
works and text = "test 3"
however I can't access the other 2 SampleViews as they are Tuples
InspectableView
▿ content : Content
▿ view : VStack<TupleView<(Spacer, Optional<TupleView<(AnyView, ModifiedContent<Spacer, _FrameLayout>)>>, Optional<TupleView<(AnyView, ModifiedContent<Spacer, _FrameLayout>)>>, Optional, ModifiedContent<Spacer, _FrameLayout>)>>
▿ _tree : Tree<_VStackLayout, TupleView<(Spacer, Optional<TupleView<(AnyView, ModifiedContent<Spacer, _FrameLayout>)>>, Optional<TupleView<(AnyView, ModifiedContent<Spacer, _FrameLayout>)>>, Optional, ModifiedContent<Spacer, _FrameLayout>)>>
▿ root : _VStackLayout
▿ alignment : HorizontalAlignment
▿ key : AlignmentKey
- bits : 140735363993224
- spacing : nil
▿ content : TupleView<(Spacer, Optional<TupleView<(AnyView, ModifiedContent<Spacer, _FrameLayout>)>>, Optional<TupleView<(AnyView, ModifiedContent<Spacer, _FrameLayout>)>>, Optional, ModifiedContent<Spacer, _FrameLayout>)>
▿ value : 5 elements
▿ .0 : Spacer
- minLength : nil
▿ .1 : Optional<TupleView<(AnyView, ModifiedContent<Spacer, _FrameLayout>)>>
▿ some : TupleView<(AnyView, ModifiedContent<Spacer, _FrameLayout>)>
▿ value : 2 elements
▿ .0 : AnyView
▿ storage : <AnyViewStorage: 0x600003e29bc0>
▿ .1 : ModifiedContent<Spacer, _FrameLayout>
▿ content : Spacer
- minLength : nil
▿ modifier : _FrameLayout
- width : nil
▿ height : Optional
- some : 10.0
▿ alignment : Alignment
▿ horizontal : HorizontalAlignment
▿ key : AlignmentKey
- bits : 140735363993224
▿ vertical : VerticalAlignment
▿ key : AlignmentKey
- bits : 140735363993201
▿ .2 : Optional<TupleView<(AnyView, ModifiedContent<Spacer, _FrameLayout>)>>
▿ some : TupleView<(AnyView, ModifiedContent<Spacer, _FrameLayout>)>
▿ value : 2 elements
▿ .0 : AnyView
▿ storage : <AnyViewStorage: 0x600003e296c0>
▿ .1 : ModifiedContent<Spacer, _FrameLayout>
▿ content : Spacer
- minLength : nil
▿ modifier : _FrameLayout
- width : nil
▿ height : Optional
- some : 10.0
▿ alignment : Alignment
▿ horizontal : HorizontalAlignment
▿ key : AlignmentKey
- bits : 140735363993224
▿ vertical : VerticalAlignment
▿ key : AlignmentKey
- bits : 140735363993201
▿ .3 : Optional
▿ some : AnyView
▿ storage : <AnyViewStorage: 0x600003e29740>
▿ .4 : ModifiedContent<Spacer, _FrameLayout>
▿ content : Spacer
- minLength : nil
▿ modifier : _FrameLayout
- width : nil
▿ height : Optional
- some : 55.0
▿ alignment : Alignment
▿ horizontal : HorizontalAlignment
▿ key : AlignmentKey
- bits : 140735363993224
▿ vertical : VerticalAlignment
▿ key : AlignmentKey
- bits : 140735363993201
- modifiers : 0 elements
so how do I access the tuple at vStack index 1? and 2?
(lldb) po view.vStack().anyView(1)
▿ Unable to extract AnyView: please specify its index inside parent view
- notSupported : "Unable to extract AnyView: please specify its index inside parent view"
from viewinspector.
For future reference: this has been addressed in #56, while .viewBuilder()
will be deprecated in the coming version
from viewinspector.
Related Issues (20)
- Inspecting custom modifier doesn't see removed views HOT 1
- Inspecting conditional toolbar content
- Inspect fails to find views due to `guardType(value:namespacedPrefixes:inspectionCall:)` incorrectly failing HOT 4
- Xcode 15.0 - Type mismatch: ButtonAction is not () -> () HOT 1
- Question: trying to use the (super) ViewInspector in non test code HOT 1
- Runtime warning when using . modelContainer modifier for SwiftData HOT 1
- View Hosting on watchOS in a Swift Package HOT 1
- iOS 17: Button style check HOT 1
- Views with .help become unfindable HOT 4
- Find fails when view has recursion inside of ForEach HOT 1
- Issue with .tint() modifier in Tests after updating Deployment Target to iOS 16
- Not found Shape in test layer HOT 2
- Accessing properties on a view that takes a generic HOT 2
- Does find(button: "xyz") find custom button `label:`s? HOT 4
- Interface buttons by ID HOT 1
- Is there a timeline on when we can expect 0.10.0 to be released? HOT 4
- View for `UIViewControllerRepresentable` is absent
- Only able to find the first AccessibilityIdentifier applied to a View, unless applied using a ViewModifier.
- Inspection of onTap gesture on custom Layout HOT 1
- Not able to test Charts framework elements/protocols
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from viewinspector.