MacOS SwiftUI ऐप टैब टूलबार में खंडित नियंत्रण के साथ देखें


9

मैं SwiftUI के साथ एक macOS ऐप बनाने की कोशिश कर रहा हूं। मुझे एक TabViewसमान या कुछ की आवश्यकता है , लेकिन जब मैं TabViewखंडित नियंत्रण का उपयोग करता हूं तो वह मैकओएस टूलबार में नहीं होता है। मैं क्या चाहूंगा इसका एक उदाहरण देखने के लिए यहां क्लिक करें

मेरा वर्तमान कोड है:

import SwiftUI

struct ContentView: View {
    var body: some View {
        TabView {
            Text("1")
                .tabItem {
                    Text("1")
            }
        }
    }
}

परिणाम यहाँ एक छवि के रूप में है

सेगमेंटेड कंट्रोल को टूलबार में होना चाहिए, न कि व्यू में।

धन्यवाद।

जवाबों:


1

इसे प्राप्त करने के लिए संभावित दृष्टिकोण का एक सरलीकृत डेमो यहां दिया गया है। परीक्षण और Xcode 11.2 के साथ काम करता है।

डेमो

1) आवश्यक शैली और पृष्ठभूमि में करने के लिए विंडो तैयार करें AppDelegate

func applicationDidFinishLaunching(_ aNotification: Notification) {
    // Create the SwiftUI view that provides the window contents.
    let contentView = ContentView()
        .edgesIgnoringSafeArea(.top)
        .frame(minWidth: 480, maxWidth: .infinity, minHeight: 300, maxHeight: .infinity)

    // Create the window and set the content view. 
    window = NSWindow(
        contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
        styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
        backing: .buffered, defer: false)
    window.center()
    window.titlebarAppearsTransparent = true
    window.titleVisibility = .hidden

    window.setFrameAutosaveName("Main Window")
    window.contentView = NSHostingView(rootView: contentView)
    window.makeKeyAndOrderFront(nil)
}

2) आवश्यक व्यवहार करने के लिए विंडो सामग्री दृश्य तैयार करें

struct ContentView: View {
    private let tabs = ["Watch Now", "Movies", "TV Shows", "Kids", "Library"]
    @State private var selectedTab = 0
    var body: some View {
        VStack {
            HStack {
                Spacer()
                Picker("", selection: $selectedTab) {
                    ForEach(tabs.indices) { i in
                        Text(self.tabs[i]).tag(i)
                    }
                }
                .pickerStyle(SegmentedPickerStyle())
                .padding(.top, 8)
                Spacer()
            }
            .padding(.horizontal, 100)
            Divider()
            GeometryReader { gp in
                VStack {
                    ChildTabView(title: self.tabs[self.selectedTab], index: self.selectedTab)
                }
            }
        }
    }
}

struct ChildTabView: View {
    var title: String
    var index: Int

    var body: some View {
        Text("\(title)")
    }
}

आपके उत्तर के लिए धन्यवाद। मैं वास्तव में कुछ ऐसी चीज़ों की तलाश में हूं जो ऐप्पल के ऐप की तरह है, भले ही ऐपकिट में। आपकी प्रतिक्रिया की सराहना की जाती है। धन्यवाद
NG235

मुझे विश्वास है कि Apple ने टूलबार में खंडित नियंत्रण के साथ WWDC 2019 में एक SwiftUI Mac ऐप दिखाया।
NG235 20
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.