Şu ana kadar yazdığım yazılarda iPhone/iPad uygulamaları için arayüz tasarımı yaparken kullanılan temel bileşenler ve ekranlar arasında navigasyon konusunda gerekli olan temel bilgileri verdim. Bundan sonrasında örnek uygulamadan çok belli başlı işlemleri yapan kod parçaları göstereceğim. Bu yazıda göstereceklerim dosya yönetimi ile ilgili. Daha spesifik olmak gerekirse, iPhone SDK içerisindeki metodları kullanarak Application Bundle içerisindeki bir dosyayı üzerinde değişiklik yapabileceğiniz bir yere nasıl kopyalarsınız, dosya ve klasör nasıl yaratır, taşır, yeniden adlandırır ya da silersiniz, yarattığınız veya kopyaladığınız dosyalara nasıl erişirsiniz bunları anlatacağım.

Yazdığınız iPhone uygulamasını cihaza veya simülatöre yüklendiğinizde iOS uygulamanız için sadece o uygulamanın erişebileceği özel bir alan yaratıyor. Bu alan içerisinde uygulamanızın kendisini ve uygulamayla birlikte verdiğiniz dosyaları içeren "Application Bundle" konuluyor. Daha sonra uygulamanız çalışırken bu bundle içerisinden istediği verileri okuyabiliyor ancak değişiklik yapamıyor (Aslında yapmanın yolu var ancak kesinlikle tavsiye edilmiyor). Uygulamanın üzerinde değişiklik yapacağı dosyaları koymanız için iOS tarafından önceden tanımlanmış bazı klasörler var. Bunlardan en önemli 2 tanesi Documents ve Library klasörleri.

Bu yazımda iPhone uygulamalarında en sık kullanılan navigasyon tipi olan UINavigationController ile derinlikli navigasyonun nasıl yapıldığını anlatacağım. Bu tür navigasyon genellikle çok sayıda ekrana sahip olan uygulamalarda kullanılmakta. Birbirinden bağımsız modüllerden oluşan veher bir modülünde çok sayıda ekran olan uygulamalarda ise hem Tab Barhem de Navigation Bar içeren bir yapı görmek de mümkün ancak bu pekyaygın bir kullanım değil. Burada tek başına Navigation Bar kullanarak 2ekranlı bir uygulama nasıl yapılır onu anlatacağım. Bu yazıyı okumadan önce Tab Bar Controller'dan bahseden önceki yazımı okumanızı tavsiye ederim çünkü oradakine benzer işlemler yapacağımız için burada her şeyi çok detaylı anlatmayacağım.

Önceki yazılarımda çok ekranlı iPhone uygulamaları yazmanın 3 farklı yolu olduğunu söylemiştim:

  • UIScrollView kullanarak tek ekranda birden fazla sayfa göstermek
  • UITabBarController kullanarak tab'lı menü yapısı kurmak
  • UINavigationController kullanarak tab'sız, derinlikli menü yapısı kurmak.

Bunlardan ilkinin nasıl yapılacağını daha önce ele almıştım. Bugünkü yazımda da ikinci yöntemi ele alacağım. Tab'lıarayüzler tipik olarak az sayıda, birbirinden bağımsız işlevselliğesahip ekranları olan uygulamalarda kullanılmakta. iPhone uygulamalarında kullanılmaları çok kolay çünkü iOS işletim sistemi tabdeğiştirdiğinizde ekrana o tab ile ilgili olan ekranın getirilmesi içinyapılması gereken her şeyi sizin yerinize yapıyor. Şimdi bu tip arayüzesahip bir uygulamanın nasıl yapıldığını basit bir örnek üzerindegöstereceğim.

Daha önceki bir yazımda ScrollView bileşeninin nasıl kullanıldığını anlatmış ve gelecekteki bir yazımda bu bileşen yardımıyla iOS ana ekranındaki (home screen) sayfalama işlevseliğinin aynısının nasıl yapılacağını anlatacağımı söylemiştim. Bu yazımda ele alacağım konu tam olarak bu. Her zamanki gibi örnek bir iphone uygulaması yazacağım ancak daha önceki yazımda yazılan şeylerin artık bilindiğini varsayıp orada anlatmış olduğum şeyleri tekrar etmeyeceğim. Örnek uygulamanın her biri basit bir UILabel bileşeni içeren toplam 3 sayfası olacak. Ancak bu sayfalar farklı ViewController'lar tarafından kontrol edilen farklı ekranlarda olmayacak. Tek bir ViewController tarafından kontrol edilen, tek bir ekranda olacak. ScrollView yardımıyla bu tek ekran sanki 3 sayfaymış gibi gösterilecek. Kullanıcıya kaçıncı sayfada olduğu, UIPageControl nesnesinin arayüze koyduğu dairelerle (aynı home screen'de olduğu gibi) gösterilecek.

iPhone/iPad uygulamalarında yaygın olarak kullanılan bileşenlerle ilgili yazılarıma devam ediyorum. Bu yazıda bahsedeceğim bileşen UIWebView. Bu bileşen adından da anlayabileceğiniz gibi bir web tarayıcısı. Safari gibi bir tarayıcıdan tek eksiği navigasyon ve benzeri işlevleri yapabilmek için tuşlara değil, Objective-C kodu aracılığıyla kullanılabilen metod ve özelliklere sahip olması. Bu yazımda göstereceğim örnek uygulamada geri git, ileri git, sayfayı yenile gibi tuşlar ve sitenin gösterileceği bir alandan ibaret olan basit bir web tarayıcısı. Bu örneği takip ederken UIWebView ile bir tarayıcının yerine getirmesi gereken temel işlevleri kod içerisinden nasıl yapılabileceğini öğreneceksiniz.

Bu yazımda, iPhone/iPad uygulamaları yazarken daha önceden bahsettiğim bileşenlerden sonra en çok kullanılan bileşen olan UIScrollView'in (Türkçesine kayar panel diyeceğim) nasıl kullanıldığını bir örnek üzerinde açıklayacağım. Temel amacı ekrana sığmayan herhangi bir şeyin kullanıcı tarafından swipe/pitch hareketleri yardımıyla görülüp kullanabilmesini sağlamak olan bu bileşenin piyasada bulabileceğiniz iPhone ve iPad uygulamalarının çoğunda kullanıldığından emin olabilirsiniz. Burada vereceğim örnekte ekrana sığmayan bir resmin ScrollView yardımıyla nasıl gösterilebileceğini ve ScrollView içeriğinin doğrudan kullanıcı müdahelesi olmadan kod içerisinden nasıl kontrol edilebileceğini anlatacağım. Anlatacaklarım basit gibi görünebilir, ancak yazmaya kalkacağınız uygulamaların %90'ında bundan fazlasını bilmeniz gerekmeyecek. Daha sonraki yazılarımdan birinde ScrollView kullanarak nasıl iPhone ve iPad'in ana ekranında olduğu gibi sayfalama yapılabileceğini de göstereceğim. Ancak o yazıyı anlayabilmeniz için önce burada anlatacaklarımı anlamış olmanız gerekiyor.

iPhone/iPad uygulamalarında, her bir hücresi derin bir menü sistemi ve onlarca bileşen içeren tablolar görebileceğiniz gibi, 2-3 bileşen içeren hücrelerden oluşan basit tablolar da görebilirsiniz. Aslında uygulamaların geneline bakarsanız, bahsettiğim ikinci türden tabloların çok daha sık kullanıldığını görürsünüz. Kompleks hücre tasarımlarını genellikle Interface Builder ile ayrı bir .xib dosyasında yapmak mantıklıyken, basit hücreler için ayrı dosya oluşturup projei karıştırmaya gerek yoktur. Bu yazıda tablo hücrelerinin içeriğinin isteğe göre nasıl değiştirilebileceğini göstereceğim. Örnek olarak ise her satırında bir tuş ve tuşa basıldığında görünür halden görünmez hale geçen bir tik ikonu içeren bir tablo oluşturacağım.

iPhone programlama ile ilgili olan bu ikinci yazımda, iPhone uygulamaları geliştirirken en çok kullanılan bileşenlerden biri olan UITableView bileşeninin, yani tabloların nasıl kullanılacağını göstereceğim. Önce bir liste göstermekten başka bir şey yapmayan etkileşimsiz bir tabloyu çalışır hale getirip, sonrasında bu tablonun sırasıyla satırlarına basıldığında bir mesaj gösteren, satırları silinebilen ve satırlarının yerleri değiştirilebilen hale nasıl getirilebileceğini adım adım göstereceğim.

Bu yazımda çok basit bir iPhone uygulamasının nasıl yazılacağını anlatacağım. Göstereceğim örnek uygulamanın yapacağı tek şey aynı daha önce yazdığım Android ile ilgili yazıda olduğu gibi, ekranda bir tuş gösterip, tuşa basıldığında kullanıcıya bir mesaj göstermek. Dolayısı ile bu yazının, Android için yazdığım öteki yazının iPhone versiyonu olduğunu söyleyebilirim. Ancak burada anlatmam gereken daha fazla şey olacak çünkü her ne kadar iOS Android'den çok daha iyi ve programcı dostu bir işletim sistemi olsa da, daha önce Mac OSX için yazılım geliştirmemiş olan kişilere tamamen Fransız gelecek bir ortam. Bunun iki temel sebebi var. Biri iPhone uygulamaları geliştirirken Windows veya Linux kullanıcılarının tamamen yabancıolduğu Objective-C dilini kullanmak zorunda olmak. Diğeri de yazılım geliştirme ortamı olarak Visual Studio ve Eclipse'ten çok farklı bir şekilde çalışan XCode IDE'sinin kullanılması.

Göstereğim uygulamanın kendi bir pek işe yarar bir şey yapmıyor belki ancak iOS ortamına giriş yapmak için yeterli olduğunu düşünüyorum. Bu yazımda objective-c dilini anlatmak gibi bir amacım yok, ancak yine de yeri geldiğinde çok kullanılan bazı yapıların ne anlama geldiği hakkında kısa açıklamalar yapacağım. Bu yazıyı okuduktan sonra aşağıdaki soruların cevaplarını almış olacaksınız.

  • iPhone uygulamaları geliştirmek için hangi yazılım ve donanıma ihtiyaç vardır?
  • XCode ile bir iPhone projesi nasıl oluşturulur?
  • Bir iPhone projesi hangi klasör ve dosyaları içerir ve bunların işlevi nedir?
  • Interface Builder kullanılarak nasıl arayüz tasarlanır?
  • Arayüz ile kod arasında nasıl bağlantı kurulur?
  • Tuşa basmak gibi basit olaylar nasıl karşılanır?
  • Kullanıcıya bir mesaj en kolay nasıl gösterilir?
  • iPhone simülatörü nasıl kullanılır?

Bu cevaplar, iPhone programlama ile ilgili Türkçe bilginin neredeyse hiç olmadığı bu zamanda iPhone uygulamaları geliştirmeye başlangıç yapmak için yeterli olacaktır. Eğer vakit bulabilirsem gelecekte farklı arayüz bileşenlerinin nasıl kullanıldıklarını, cihaz içerisine nasıl kalıcı veriler tutulacağını ve ivme sensörü, GPS, pusula gibi donanımların nasıl kullanılacağını örnekler ile gösteren yazılar yazmayı planlıyorum.