Published on

ShareLink va Transferable β€” ma'lumot ulashish

Authors

ShareLink (iOS 16+) β€” SwiftUI ning tizim share sheet ni ochish uchun komponenti. Matn, rasm, URL yoki istalgan Transferable ob'ektni ulashish mumkin. Foydalanuvchi AirDrop, Messages, Mail, ijtimoiy tarmoqlar orqali kontentni yuborishi mumkin.

Transferable β€” drag-drop, copy-paste va ulashish uchun protokol. String, URL, Data kabi standart turlar allaqachon Transferable. O'z turlaringiz uchun Transferable ga moslashtirish mumkin β€” bu ilovangiz kontentini boshqa ilovalar bilan almashish imkonini beradi.

// ═══════════════════════════════════════
//  MATN ULASHISH
// ═══════════════════════════════════════
ShareLink(item: "SwiftUI juda ajoyib framework!")

// Maxsus ko'rinish
ShareLink(item: "SwiftUI o'rganmoqdaman") {
    Label("Ulashish", systemImage: "square.and.arrow.up")
}

// URL ulashish
ShareLink(item: URL(string: "https://swiftui.uz")!) {
    Label("Saytni ulashish", systemImage: "link")
}

// Subject va message bilan
ShareLink(
    item: URL(string: "https://swiftui.uz")!,
    subject: Text("SwiftUI o'rganish"),
    message: Text("Bu saytda SwiftUI darslar bor!")
) {
    Image(systemName: "square.and.arrow.up.circle.fill")
        .font(.title)
}

// Preview bilan
ShareLink(
    item: URL(string: "https://swiftui.uz")!,
    preview: SharePreview(
        "SwiftUI.uz β€” iOS darslar",
        image: Image(systemName: "swift")
    )
) {
    Label("Ulashish", systemImage: "square.and.arrow.up")
}

Transferable β€” custom tur

// ═══════════════════════════════════════
//  O'Z TURINGIZNI TRANSFERABLE QILISH
// ═══════════════════════════════════════
struct Maqola: Codable, Transferable {
    let sarlavha: String
    let mazmun: String
    let muallif: String

    // Qanday formatda uzatilishini aniqlash
    static var transferRepresentation: some TransferRepresentation {
        // JSON sifatida β€” boshqa ilovalar uchun
        CodableRepresentation(contentType: .json)
        // Matn sifatida β€” oddiy nusxa olish uchun
        ProxyRepresentation(exporting: \.sarlavha)
    }
}

// ShareLink da ishlatish
let maqola = Maqola(
    sarlavha: "SwiftUI asoslari",
    mazmun: "Bu maqolada...",
    muallif: "Ali"
)

ShareLink(
    item: maqola,
    preview: SharePreview(maqola.sarlavha)
)

Drag and Drop

struct DragDropMisol: View {
    @State private var chap: [String] = ["Olma", "Banan", "Gilos"]
    @State private var ong: [String] = []

    var body: some View {
        HStack(spacing: 20) {
            // Chap ro'yxat β€” drag qilish
            VStack {
                Text("Mevalar").font(.headline)
                ForEach(chap, id: \.self) { meva in
                    Text(meva)
                        .padding()
                        .background(.blue.opacity(0.2))
                        .clipShape(RoundedRectangle(cornerRadius: 8))
                        .draggable(meva) // Drag qilish mumkin
                }
            }

            // O'ng ro'yxat β€” drop qilish
            VStack {
                Text("Savat").font(.headline)
                ForEach(ong, id: \.self) { meva in
                    Text(meva).padding()
                }
            }
            .frame(minWidth: 100, minHeight: 200)
            .background(.gray.opacity(0.1))
            .clipShape(RoundedRectangle(cornerRadius: 12))
            .dropDestination(for: String.self) { elementlar, _ in
                ong.append(contentsOf: elementlar)
                return true
            }
        }
        .padding()
    }
}

🎯 Topshiriq

Kontakt struct yarating (ism, telefon, email) β€” Transferable qilib, ShareLink da ulashish. Drag-drop bilan kontaktlarni sevimlilar ro'yxatiga ko'chirish. SharePreview da kontakt ismini ko'rsating.

Buy mea coffee