Здравствуйте, коллеги iOS-разработчики! Готовы ли вы создать веселое и увлекательное приложение для обзора сортов марихуаны с помощью SwiftUI? В этой непринужденной статье мы проведем вас через процесс создания приложения, в котором пользователи могут добавлять свои любимые сорта каннабиса, писать отзывы и загружать фотографии (необязательно). Не нужно беспокоиться о регистрации или входе в систему — просто расслабьтесь, расслабьтесь и начнем! 🚀🌈

Основы: приступим! 🚬

Во-первых, давайте создадим простую модель данных для наших штаммов марихуаны:

struct Strain: Identifiable {
    let id = UUID()
    let name: String
    let review: String
    let image: UIImage?
}

Наша модель Strain теперь готова к быстрой стрельбе! 🔥

Список штаммов: ваша библиотека сорняков 📚

Далее создадим представление для отображения списка штаммов:

struct StrainListView: View {
    @State private var strains: [Strain] = []

    var body: some View {
        NavigationView {
            List(strains) { strain in
                NavigationLink(destination: StrainDetailView(strain: strain)) {
                    Text(strain.name)
                }
            }
            .navigationTitle("Strains")
            .navigationBarItems(trailing: Button(action: {
                // Add strain action
            }) {
                Image(systemName: "plus")
            })
        }
    }
}

Теперь у нас есть список для отслеживания наших штаммов — это как маленький зеленый сад в кармане! 🌱

Подробный вид штамма: высокая похвала 🌟

Давайте создадим представление, чтобы показать детали выбранного штамма:

struct StrainDetailView: View {
    let strain: Strain

    var body: some View {
        VStack {
            if let image = strain.image {
                Image(uiImage: image)
                    .resizable()
                    .scaledToFit()
            }
            Text(strain.name)
                .font(.largeTitle)
            Text(strain.review)
                .padding()
        }
    }
}

Наш подробный обзор теперь готов продемонстрировать наши любимые сорта во всей их красе! 🍃

Добавление штаммов: он растет! 🌳

Теперь давайте создадим форму для добавления новых штаммов в список. Но перед этим нам нужно реализовать представление PhotoPicker, используя новый PhotosPicker:

import SwiftUI
import PhotosUI

struct PhotoPicker: UIViewControllerRepresentable {
    @Binding var selectedImage: UIImage?

    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }

    func makeUIViewController(context: Context) -> PHPickerViewController {
        var config = PHPickerConfiguration()
        config.selectionLimit = 1
        config.filter = .images
        let controller = PHPickerViewController(configuration: config)
        controller.delegate = context.coordinator
        return controller
    }

    func updateUIViewController(_ uiViewController: PHPickerViewController, context: Context) { }

    class Coordinator: NSObject, PHPickerViewControllerDelegate {
        private let parent: PhotoPicker

        init(_ parent: PhotoPicker) {
            self.parent = parent
        }

        func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
            parent.selectedImage = results.first?.uiImage
            picker.dismiss(animated: true)
        }
    }
}

Добавление штаммов: он растет! 🌳 (продолжение)

Теперь, когда у нас есть PhotoPicker, давайте обновим AddStrainView, чтобы использовать его:

struct AddStrainView: View {
    @Binding var strains: [Strain]
    @State private var name: String = ""
    @State private var review: String = ""
    @State private var image: UIImage?
    @State private var showPhotoPicker: Bool = false

    var body: some View {
        NavigationView {
            Form {
                TextField("Name", text: $name)
                TextEditor(text: $review)
                    .frame(height: 200)

                Button(action: {
                    showPhotoPicker = true
                }) {
                    Text("Add Photo")
                }
                .sheet(isPresented: $showPhotoPicker) {
                    PhotoPicker(selectedImage: $image)
                }

                if let image = image {
                    Image(uiImage: image)
                        .resizable()
                        .scaledToFit()
                }
                
                Button(action: {
                    let newStrain = Strain(name: name, review: review, image: image)
                    strains.append(newStrain)
                }) {
                    Text("Save")
                }
            }
            .navigationTitle("Add Strain")
        }
    }
}

Вот и все! Теперь пользователи могут добавлять фотографии своих любимых сортов марихуаны, используя новый PhotosPicker в SwiftUI. Удачного снимка! 📸🌿

Завершение: светская жизнь 🌈

Вы только что создали забавное и увлекательное приложение для обзора сортов марихуаны с помощью SwiftUI. Теперь пользователи могут легко добавлять свои любимые сорта с обзорами и необязательными фотографиями, не утруждая себя регистрацией или входом в систему. Так что вперед и делитесь любовью к каннабису со всем миром — это совместные усилия! 😉🌿