Git commit etmeden pull etme

Başlık biraz tuhaf oldu ancak yıllarca SVN kullanıp GIT’e geçerken biraz zorlanmalar olabiliyor. Neyse. Yaptığınız bir değişikliği commit etmeyi unuttuysanız ve başka bir cihazdan değişiklik yapıp commit ettiyseniz daha sonradan tekrardan çalışma yaptığınız cihaza dönüp “pull” seçeneğini yapmak istediğinizde; “Your local changes to the following files would be overwritten by merge:” bu hatayı çözmek ve pull değerlerini alabilmek için dosyaları merge etmeniz ya da stashlemeniz gerekir, kısaca aşağıdaki terminal komutlarını kullanabilirsiniz;

İlk adım olarak “cd” komutu ile içeirsinde .git uzantılı dosya olan projeye gidin, daha sonrasında aşağıdaki komutları terminal’e girin. Working copy’deki yerel değişiklikleri kaldırmak istersek kısaca onları zulalırız (stashlemek) aşağıdaki komutu kullanalım.

git stash save --keep-index

ve artık buna ihtiyacımız yok ise stashden tamamen kaldırabiliriz.

git stash save --keep-index
Advertisements

ScrollViewController ile sayfalar arası geçiş

Scroll view çok kullanışlı bir iOS componenti diyebiliriz. ScrollView iOS arayüzünün hemen hemen her yerinde kullanılıyor. “iPhone’nun ana ekranındaki şifre alanında, TableViewController’ın listeleme alanında, Menülerin listelendiği alanda bile ScrollView kullanılıyor.” Ben de ufak da olsa storyboard kullanarak nasıl yapıldığını hem kendim anlayıp hem de blog da paylaşayım istedim.

İlk olarak yapmamız gereken proje oluşturmak, sonrasında viewcontroller’ımızın içine “Object Library” den bir adet ScrollView tutup ViewControllerımıza atmak. Daha sonrasında “Connection Inspector” den delegate’i bizim ViewControllera vermek kalıyor. Bundan sonraki işlemler de ScrollView’in içinde kullancağımız viewcontrollerı oluşturmak.

Yine aynı Object Library’den iki tane ViewController sürükleyip storyboard’a bırakın. Daha sonra bunlara sınıf oluşturun. “Ben FirstViewController ve SecondViewController” yaptım. Bir tane de button oluşturup yine ilk ViewControllerımızın görünür bir yerine atın. Butona tıklayarak bir action oluşturun. Daha sonra sayfa gelişlerinde kullnacağız. Main ViewController sınıfımıza “bu ViewController.m” anlamına geliyor. Girelim ve “viewDidload” satırına aşağıdaki kodları ekleyelim.

Uygulamada scrollview, firstvc ve secondvc bunları çekmek içinde mainStoryboard özelliği oluşturduk.

@property (weak, nonatomic) IBOutlet UIScrollView *scrollVC;
@property (nonatomic,strong) FirstViewController *firstVC;
@property (nonatomic,strong) SecondViewController *secondVC;
@property (nonatomic,strong) UIStoryboard *mainStoryboard;

Lazy Instantiation en sevdiğim 😀 ViewControllarımızı kolayca oluşturuyoruz!


-(FirstViewController *)firstVC
{
    if(!_firstVC) {
        _firstVC = [_mainStoryboard instantiateViewControllerWithIdentifier:@"FirstViewController"];
    }
    
    return _firstVC;
}

- (SecondViewController *)secondVC
{
    if(!_secondVC) {
        _secondVC = [_mainStoryboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
    }
    
    return _secondVC;
}

ViewDidLoad gerekli işlemleri yaptığımız kod bloğu.


    self.mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
    
    CGRect frame;
    frame.origin.x = self.scrollVC.frame.size.width * 2;
    frame.origin.y = 0;
    frame.size = self.scrollVC.frame.size;

    self.scrollVC.autoresizingMask = YES;
    
    self.scrollVC.contentSize = CGSizeMake(self.scrollVC.frame.size.width * 2, self.scrollVC.frame.size.height);
    [self.secondVC.view setFrame:CGRectMake(self.scrollVC.frame.size.width, 0,
                                            self.secondVC.view.frame.size.width, self.secondVC.view.frame.size.height)];
    
    [self.scrollVC addSubview:self.firstVC.view];
    [self.scrollVC addSubview:self.secondVC.view];

Buttona tıkladığında bir sonraki sayfaya geçmek için kullanıyoruz.

- (IBAction)gotoNextPage:(id)sender
{
    [UIView animateWithDuration:0.9 animations:^{
        [self.scrollVC setContentOffset:CGPointMake(self.firstVC.view.frame.size.width, self.scrollVC.frame.origin.y) animated:NO];
    }];
}

Kaynak : http://stackoverflow.com/questions/5977640/uiscrollview-and-setcontentoffset

Projenin kaynak dosyasını indirmek için : Github sayfasını ziyaret edin.