Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

خاصية @Binding

جزء من قسم مقدمة إلى SwiftUI في رحلة Swift على Coddy. الدرس 39 من 50.

عندما تنمو الشاشة، تقسّمها إلى عروض أصغر. العرض الفرعي الذي يجب أن يغيّر حالة العرض الأب يعلن عن @Binding بدلاً من امتلاك القيمة:

struct VolumeControl: View {
    @Binding var volume: Int

    var body: some View {
        Stepper("Volume: \(volume)", value: $volume, in: 0...10)
    }
}

يحتفظ العنصر الأب بـ @State ويمرّر ارتباطًا به باستخدام $:

struct ContentView: View {
    @State private var volume = 5

    var body: some View {
        VStack {
            VolumeControl(volume: $volume)
            Text(volume == 0 ? "Muted" : "Playing")
        }
    }
}

هناك قيمة واحدة تملكها ContentView. يغيّر عنصر الزيادة والنقصان في العنصر الفرعي هذه القيمة من خلال الربط، ويتبعها نص العنصر الأب. تملك @State قيمةً؛ بينما تستعير @Binding قيمةً من مكان آخر.

challenge icon

التحدي

متوسط

يجب أن يبدّل ThemeToggle قيمة darkMode في المكوّن الأب. غيّر خاصيته إلى @Binding، واربط Toggle بها، ومرّر $darkMode من ContentView. يجب أن يعرض النص Dark theme عندما يكون المفتاح مفعّلًا.

جرّب بنفسك

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس مقدمة إلى SwiftUI

تدرّب بنفسك: Playground لـ Swift