Ana içeriğe geç
  1. 100 Günde SwiftUI Notları/

47.Gün - SwiftUI Milestone: Projects 7-9 Challange

Table of Contents

Bu meydan okumada kendi başımıza sıfırdan eksiksiz bir uygulama oluşturacağız.

Bu kez hedefimiz, belirli şeyleri ne kadar yaptıklarını takip etmek isteyen kişiler için bir alışkanlık takip (Habit Tracker) uygulaması oluşturmak.

Bu en azından, takip etmek istedikleri tüm activity’lerin (faaliyetlerin) bir listesinin ve yeni activity’ler eklemek için bir formun olması gerekitği anlamına gelir. (Bir başlık ve bir açıklama yeterli olacaktır.)

Daha büyük bir zorluk için, activity’lerden birine dokunduğunuzda açıklamanın yer aldığı bir ayrıntı ekranı görüntülenmelidir. Zorlu bu görev için aşağıdaki ipuçlarına bakın. Ayrıca bu ayrıntı ekranında kaç kez tamamladıklarının yanı sıra tamamlanma sayılarını artıran bir buton bulunsun.

Ve uygulamayı gerçekten kullanışlı hale getirmek istiyorsanız, tüm verilerinizi yüklemek ve kaydetmek için Codable ve UserDefaults kullanın.

Yani, bu uygulamanın üç seviyesi var ve ne kadar zamanınız olduğuna ve kendinizi ne kadar zorlamak istediğinize bağlı olarak ne kadar ileri gitmek istediğinizi seçebilirsiniz. Yine de en azından her seviyeyi denemenizi tavsiye ederim.

İpuçları #

  • Verileriniz ile başlayın: tek bir activity tutan bir struct ve array olarak activity’leri tutan bir sınıf tanımlayın
  • SwiftUI’nin verilerinizi değişikliklere karşı izleyebilmesi için sınıfın @Observable makrosunu kullanması gerekecektir.
  • Ana listeniz ve formunuzun her ikisi de paylaşılan activity nesnesini okuyabilmelidir.
  • Sorunlardan kaçınmak için activity’nizin Identifiable ‘a uygun olduğundan emin olun.
  • sheet() kullanarak ekleme formunuzu ve NavigationLink kullanarak activity detay view’ı present edin.

Tamamlanma sayısını arttırmak için buton yapmak sizi zorlayacaktır, çünkü aktarılan activity’i değiştirmeniz gerekir. Eğer takılırsanız, en kolay yaklaşım şudur;

  1. Struct’ın Equatable ile uyumlu olmasını sağlayın. Burada özel bir şeye ihtiyacınız yok sadece Codable ve Identifiable ‘dan sonra Equatable’ı ekleyin.
  2. Hem seçilen activity’i hem de @Observable sınıfını ayrıntı view’a geçirin.
  3. Arttır butonuna dokunulduğunda, mevcut activity kopyalayın ve tamamlanma sayısına 1 ekleyin.
  4. Sınıfın array’inde önceki activity’nin nerede olduğunu bulmak için firstIndex(of:) kullanın, ardından bunu yeni activity olarak değiştirin. (data.activities[index]=newActivity gibi bir şey işe yarayacaktır. Bu, 1. adımdaki Equatable uygunluğunu gerektirir.)

SwiftUI Habit Tracker App


Bu yazıyı İngilizce olarak da okuyabilirsiniz.
You can also read this article in English.

Bu yazı, SwiftUI Day 47 adresinde bulunan yazılardan kendim için aldığım notları içermektedir. Orjinal dersi takip etmek için lütfen bağlantıya tıklayın.