Objective-C Sayfalama (UINavigationController)

Bu yazımda UINavigationController sınıfını kullanarak çok ekranlı uygulamaların nasıl hazırlandığını uygulama üzerinde anlatmaya çalışacağım.

Merhaba,
Bu yazımda UINavigationController sınıfını kullanarak çok ekranlı uygulamaların nasıl hazırlandığını uygulama üzerinde anlatmaya çalışacağım.

Uygulamamızda birden fazla ekranımız olduğunu varsayalım bu durumda tercih edebileceğimiz geliştiriciler için hazırlanmış bir kaç farklı yöntem var, önemli olan bizim ihtiyaçlarımıza en iyi cevap veren yöntemi tercih etmek ,ben bu yazımda bu yöntemlerden biri olan navigasyonu anlatacağım.

Adım 1
Xcode açarak yeni bir proje açıyoruz. Select File > New Project > Navigation - Based Application bu yolu izledikten sonra proje adı isteyecektir ben Navigation yazıyorum.

Navigation Based varsıyılan olarak RootViewController TabViewController sınıfına tanımlıyor.Görüntü denetleyicimiz table olarak gelmiş oluyor bu sınıfı UIViewController ile değiştirebiliriz veya sınıfı tamamen silip yeni bir UIViewController sınıfı oluşturabiliriz ben her iki alternatifide uygulayacağım sizler bir tanesini tercih edebilirsiniz.Önerim B alternatifi

Dikkat
Alternatif adımlarda adım sonuna A veya B yazarak alternatif adım olduğunu göstericem.
A- Var olan sınıfı UIViewController ile değiştirme.
B- Varsayılan olarak gelen sınıfı tamamen silip yerine UIViewController oluşturma.

ALTERNATİF -A
Adım 2 - A
RootViewController.h açarak

Varsayılan olarak tanımlanan

@interface RootViewController : UITableViewController {



}





@end


Degişiklikden sonra


@interface RootViewController : UIViewController {



}



@end



Adım 3 -A
RootViewController.xib açarak default gelen table view silip yerine Interface Builder birleşenlerinden (components) View ekliyoruz.Eklediğimiz View alanına sağ tıklıyor ve açılan siyah kutucukdan 1.Radio butonu sürükle bırak metodu ile File's Owner üzerine bırakıyoruz ve çıkan view'e tıklıyoruz.



ALTERNATİF-B

Adım 2 - B
Sol'daki sınıf ağacından RootViewController.m RootViewController.h ve RootViewController.xib silin.Ağaç yapısında sağ tıklayarak New file seçin açılan pencereden UIViewController Subclass Seçip next deyin yeni pencerede Subclass of kısmına "UIViewController" yazın ve next dedğinizde sizden sınıfınızın adını istiyicektir.İsime "RootViewController" yazmalısınız.



A Alternatifinde Ekledigimiz View ve ilişkilendirme işlemlerini bizim için B alternatifinde xCode yapmış oldu.
iki alternatifide görmeniz için yaptım benim önerim B Alternatifi.


Adım 4
Uygulamamızda 4 sayfamız (UIViewController) olucak bu sayfaların 3'üne ilk sayfamızdan (RootViewController) yönlendirme verirken diğer sayfamıza iç içe sayfalamayıda örneklendirmek adına 1.sayfamızın içerisinden yölendirme vericem bu yüzden RootViewController.xib 3 buton ekliyoruz tıklandığında sayfalara yönlendirmek için.

Interface Builder birleşenlerinden (components) 3 buton ekliyoruz.



Adım 4
Eklediğimiz bu 3 butona tıklandıgında çalışacak metodu tanımlamak için RootViewController.h açıyoruz.


#import <UIKit/UIKit.h>





@interface RootViewController : UIViewController {

    

}

//Butonlara tıklanıldığında çalışacak Metotlar

-(IBAction) clickPage1;

-(IBAction) clickPage2;

-(IBAction) clickPage3;

@end



Adım 5
Metotlarımızı RootViewController.h(interface) de tanımladıkdan sonra RootViewController.m (Implementation) geçebiliriz

Bu adımda metotlarımızı yazmadan önce yönlendirecegiiz 4 sayfayı oluşturmamız gerekli bunun için sol tarafdakı sınıf ağacına sağ tıklayarak New File diyoruz ve açılan pencereden UIViewController Subclass seçiyoruz. Ben sınıf isimlerine sırası ile Page1 - Page2 - Page3 - Subpage yazıyorum.



Şimdi metotlarımız yazabiliriz.

//Oluşturduğumuz sınıfları tanımlıyoruz.

#import "Page1.h"

#import "Page2.h"

#import "Page3.h"





@implementation RootViewController





//1.Butonumuza tıklandığında çalışacak metot

-(IBAction) clickPage1{

//Page1 sınıfımızdan bir nesne türetiyoruz

    Page1*_page=[[Page1 alloc]init];

//türettiğmiz bu nesneyi Navigation altındaki View alanına ekliyoruz.

    [self.navigationController pushViewController:_page animated:YES];

    [_page release];

}

//2.Butonumuza tıklandığında çalışacak metot

-(IBAction) clickPage2{

    

    Page2*_page=[[Page1 alloc]init];

    [self.navigationController pushViewController:_page animated:YES];

    [_page release];



}

//3.Butonumuza tıklandığında çalışacak metot

-(IBAction) clickPage3{

    Page3*_page=[[Page1 alloc]init];

    [self.navigationController pushViewController:_page animated:YES];

    [_page release];

}

- (void)viewDidLoad

{

//Navigasyonun başlığını belirtiyoruz.

    self.navigationItem.title = @"Root";  

    [super viewDidLoad];

   

}



Adım 6
Metotlarımızı yazdıktan sonra bu metotlar ile xib üzerindeki butonlarımızı ilişkilendiricez. RootViewController.xib açarak Butonlara sırası ile sağ tıklayarak açılan siyah kutucukdan Touch Up Inside karşısındaki radio butonu sürekle bırak metodu ile File's Owner üzerine bırakıyoruz bıraktığımızda hangi metot ile ilişkilendirmek istediğimizi sorucaktır.



1.Buton = clickPage1
2.Buton = clickPage2
3.Buton = clickPage3




Bu ilişkilendirmeleri yaparak bu adımı tamamlıyoruz.

Adım 7
5.Adımda 4 sayfa oluşturmuştuk Page1 , Page2 ,Page3 ve SubPage isminde bu sınıfların xib dosyasını açarak sayfaya yönlendiğimizde hangi sayfada olduğumuz anlamak adına View alanlarına Label ve Arkaplan rengini değiştiriyoruz.

Page1.xib seçerek view alanına Interface Builder birleşenlerinden (components) label ekliyoruz arkaplan rengi için ise View alanına tıklıyoruz ve sol tarafdaki menuden arka plan rengini değiştiriyoruz.





Bu adımı tüm sayfalar için yapıyoruz
Page1, Page2 ,Page3 ,SubPage

Uygulamanızı bu adımları tamamladıkdan sonra test ettiğinizde butonlara tıklandıgında sayfalara yölendigini görüceksinizidir.



Adım 8
İç içe sayfalamaya da örnek vermek adına oluşturdugumuz SubPage sınıfına Page1 üzerinde oluşturcagımız butona tıklandıgında yölendiricez bu durumda Root > Page1 > SubPage yönlenerek iç içe sayfalama yaparak navigasyon sayesinde bu sayfa sayılarını çok rahat arttırabilğimizi görücez.

Page1.h açarak butona tıklandıgında çalışacak metodumuzu tanımlıyoruz.


#import <UIKit/UIKit.h>





@interface Page1 : UIViewController {

    

}

-(IBAction) clickSubPage;

@end



Page1.m sınfını açarak page.h üzerinde oluşturdugumuz metodumuzu yazıyoruz.


-(IBAction) clickSubPage{

    SubPage*_page1=[[SubPage alloc]init];

    [self.navigationController pushViewController:_page1 animated:YES];

    [_page1 release];



}




//SubPage tanımlıyoruz.

#import "Page1.h"

#import "SubPage.h"



@implementation Page1



Adım 9
Page.xib açarak butonumuzu ekleyip clickSubPage metodu ile ilişkilendiriyoruz.

Interface Builder birleşenlerinden (components) view alanına buton ekliyoruz eklediğimiz butona sağ tıklayarak açılan siyah kutucukdan Touch Up Inside karşısındaki radio butonu sürekle bırak metodu ile File's Owner üzerine bırakıyoruz.

Bu adımıda tamamladıkdan sonra uygulamanızı tekrar test edebilirsiniz.Page1 üzerindeki butona tıkladığınızda SubPage yölendiginizi göriceksiniz.

Not
Uygulamanızı test ettğinizde fark ediceksinizdir sayfa geçişleri sağdan sola kayarak gerçekleşiyor bunu yerine farklı bir animasyon yapmak isterseniz Butonlara tıklama metotlarına sayfaları çagırmadan şu kodlarımız yazmamız yeterli ,ben clickPage1 metodunu revize ediyorum siz tüm metotlara bunu uygulayabilirsiniz.

-(IBAction) clickPage1{

[UIView beginAnimations:nil context:nil];

[UIView setAnimationDuration:1];

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO];
[UIView commitAnimations];


Page1*_page=[[Page1 alloc]init];
[self.navigationController pushViewController:_page animated:NO];
[_page release];
}



Uygulamayı test edebilmek için Build > Build and Go demelisiniz. Kullandıgınız xCode sürümüne bağlı olarak Sağ üst köşeden "Run" diyebilirsiniz.

  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git