我正在使用TabView和 在其中,我正在使用Fragment加载每个选项卡。我想Touch在用户触摸任何片段时获取事件。
片段代码
public MobileBankingFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
context = (FragmentActivity) super.getActivity();
view = inflater.inflate(R.layout.fragment_mobile_banking, container, false);
alarm = new TimerReceiver();
init(view);
touchListener(view);
return view;
}
private void touchListener(View view) {
layout= (FrameLayout) view.findViewById(R.id.fragmentMobileBanking);
layout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(context, "you just touch the screen :-)", Toast.LENGTH_SHORT).show();
return true;
}
});
view.setOnTouchListener(new View.OnTouchListener() { …Run Code Online (Sandbox Code Playgroud) 我想从myFunc()打来电话(请参阅的事件)。我尝试了一些属性别名的东西,但到目前为止没有任何效果。有任何想法吗?PageA.qmlmain.qmlonClickedButton
这是我的PageA.qml代码:
import QtQuick 2.4
import QtQuick.Controls 1.2
Item {
function myFunc() { /* ... */ }
TextField { id: myText }
}
Run Code Online (Sandbox Code Playgroud)
这是我的main.qml:
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
ApplicationWindow {
width: 640
height: 480
visible: true
TabView {
Tab {
title: "Tab A"
PageA { }
}
// ...
}
Button {
text: "click"
onClicked: callMyFunc()
}
function callMyFunc() {
// Call myFunc() in PageA.qml …Run Code Online (Sandbox Code Playgroud) 我有一个项目,其中的部分ContentView应该在选择不同的选项卡时发生变化。我有以下结构和 TabView 项目的数组:
struct TabItem: Identifiable {
var id = UUID()
var title: Text
var image: Image
var tag: Int
}
let tabData = [
TabItem(title: Text("Tab 1"), image: Image(systemName: "1"), tag: 1),
TabItem(title: Text("Tab 2"), image: Image(systemName: "2"), tag: 2),
TabItem(title: Text("Tab 3"), image: Image(systemName: "3"), tag: 3),
TabItem(title: Text("Tab 4"), image: Image(systemName: "4"), tag: 4)
]
Run Code Online (Sandbox Code Playgroud)
我试图在里面列出这些,TabView但无法弄清楚如何这样做。尝试了以下方法,但到目前为止还没有运气。
TabView {
ContentView()
.tabItem {
// code goes here...
}.tag // tag goes here
}
Run Code Online (Sandbox Code Playgroud)
我知道我也可以使用TabView(selection: …
下面的代码正在工作(onAppear 被调用)但是一旦我将我的两个视图嵌套在一个 tabView 中(以呈现类似 UIPageViewController 的 UI),第二个视图的 onAppear 函数就永远不会被调用,这是一个错误还是我在做什么做错了吗?
struct SetUpWorkoutView: View {
var body: some View {
NavigationView {
List {
ForEach(sessionTypes) { sessionType in
NavigationLink(destination: LiveWorkoutView(sessionType: sessionType)) {
SessionTypeRow(name: sessionType.stringValue)
}
}
}
}
struct LiveWorkoutView: View {
var body: some View {
VStack(alignment: .leading) { }
}.onAppear(perform: {
print("on appear called in LiveWorkoutView")
}
}
}
}
@main
struct SwiftUITestApp: App {
var body: some Scene {
WindowGroup {
TabView {
SetUpWorkoutView()
WatchSettingsView()
}
.tabViewStyle(PageTabViewStyle())
}
} …Run Code Online (Sandbox Code Playgroud) 如何将项目设置为禁用(不可点击)但在我的 tabView 中可见?
TabView(selection: $selectedTab) {
Settings()
.tabItem {
Image(systemName: "gearshape.fill")
Text("Settings")
}.tag(1)
.disabled(true) // Not Working
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个具有多个选项卡的表单,但出于某种原因,如果我在表单上调用验证或保存,我只能从活动的选项卡中获取值,并且错误也是如此,我认为这可能是因为表单仅从字段获取值当前在屏幕上呈现的内容。
那么有人可以告诉我如何使表单与多个选项卡视图一起使用,以便在更改选项卡后我可以验证尚未访问过的选项卡以及来自既得选项卡的选项卡。
有AutomaticKeepAliveClientMixin,但它只能保持状态处于活动状态,但我对 onSave 或验证器更感兴趣,因为我在父元素中而不是在选项卡视图中管理状态
提前致谢
我正在尝试制作一个双向 TabView (带有.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))),其数据源会随着时间的推移而改变。
下面的代码描述了预期的结果:
class TabsViewModel: ObservableObject {
@Published var items = [-2, -1, 0, 1, 2]
@Published var selectedItem = 2 {
didSet {
if let index = items.firstIndex(of: selectedItem), index >= items.count - 2 {
items = items + [items.last! + 1]
items.removeFirst()
}
if let index = items.firstIndex(of: selectedItem), index <= 1 {
items = [items.first! - 1] + items
items.removeLast()
}
}
}
}
struct TabsView: View {
@StateObject var vm = TabsViewModel() …Run Code Online (Sandbox Code Playgroud) 如何将 iOS 15 Xcode 13 中的 TabView tabItem 上的填充图标更改为不填充?
现在看来图标是默认填充的......
我的代码:
import SwiftUI
struct Test_Home_V: View {
var body: some View {
TabView {
HomeList_V()
.tabItem {
Label("_HomeTitle", systemImage: "house")
}
...
Run Code Online (Sandbox Code Playgroud)
注意:从 iOS 15 开始,您不应明确请求 SF Symbols 图标的填充变体,因为系统会根据需要自动使用它们。
那么我怎样才能像以前一样得到我的图标(SF符号)的轮廓呢?
谢谢
我正在通过 TabView 创建一个垂直分页视图
一切都很完美,除了奇怪的右边距,如下图所示。
这是我使用的代码。如果有人能指出根本原因,我将不胜感激。
import SwiftUI
fileprivate struct VCompatibleTabView<Content: View>: View {
let proxy: GeometryProxy
let content: Content
init(proxy: GeometryProxy, @ViewBuilder content: () -> Content) {
self.proxy = proxy
self.content = content()
}
var body: some View {
if #available(iOS 15.0, *) {
// Credit to Gary Tokmen for this bit of Geometry Reader code: https://blog.prototypr.io/how-to-vertical-paging-in-swiftui-f0e4afa739ba
TabView {
content
.rotationEffect(.degrees(-90)) // Rotate content
.frame(
width: proxy.size.width,
height: proxy.size.height
)
}
.frame(
width: proxy.size.height, // Height & width swap …Run Code Online (Sandbox Code Playgroud)