Soru & Cevap

Bi Butonu Tekrar Olarak Kullanmak

03.11.2013 - 04:47

Merhaba arkadaşlar, bi süredir iOS Development ile uğraşıyorum ama takıldığım bi yer var. Basit bi sorun diye düşünüyorum. Ben işin daha çok karmaşık boyutlarına kafa yorduğum için gözümden kaçan bi alan var. Bu yüzden sorunun üstesinden bi türlü gelemedim. Bana bu konu da yardımcı olabilecek biri var mı acaba ?

 

Sorun şu;

Sol tuşa her basıldığında "_img" değerinden 1 değer azaltması gerekiyor. Benim yaptığım işlemde sadece tek sefer geçerli olmak şartıyla 1 değer azaltıyor ve bi daha basılınca buton çalışmıyor. Bi yere bi döngü koymam gerekiyor, tuşa basıldıktan sonra döngüye tekrar girmesi için ama nereye ne şekilde koyacağımı bi türlü çözemedim.

 

Yardımlarınızı bekliyorum teşekkür ederim.

- (IBAction)leftButton:(DetailImageViewController *)sender {

    NSInteger _img = [img integerValue];

    NSArray *images = [[NSArray alloc] initWithObjects:@"a 1",@"b 2",@"c 3",@"d 4", nil];

    if (_img <= 0) {

        denemeLabel.text = @"İlk değer";

    }

    else {

        _img --;

    }

    denemeLabel.text = [images objectAtIndex:_img];

}

0 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-7864-1383490128.jpg
grknblt
03.11.2013 - 10:18

Fatih Bey,

tekrardan merhaba ben sorunumun cevabını bi arkadaşım sayesinde aldım ve şuan sorunsuzca çalışmakta kodlar. Ben tamamen mantık hatası yapmışım. Aldığım cevap doğrultusunda bundan sonra çok daha farklı bir yol izleyeceğim. 

Saygılarımla.

picture-7864-1383490128.jpg
grknblt
03.11.2013 - 08:31

Fatih Bey,

Cevabınız için teşekkür ederim.

Burada sorunu paylaştıktan sonra sizin dediğiniz sorunu fark ettim. Yani benim asıl sorunum bir önceki ekrandan gelen değerin butonun kullanıldığı ekranda sürekli olarak sabit kalması. Yani ben butona basınca o değeri değiştiremiyorum sadece 1 eksiğini alıyorum. O nedenle butona ne zaman bassam ekrana hep aynı değeri veriyor. Eğer o gelen değer yani "NSInteger _img = [img integerValue];" yerine mesela "int _img = 5" değerini 

- (IBAction)leftButton:(id)sender { } alanı dışında kullanırsam sorun ortadan kalkıyor. Ama bu sefer de ekrandan çıksam bile her zaman kaldığı değerden devam ediyor. Kodlarımı paylaşıyorum.

CollectionViewController.m (img değerinin geldiği yer)

#import "CollectionViewController.h"

#import "CollectionViewCell.h"

#import "DetailImageViewController.h"

 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if([segue.identifier isEqualToString:@"DetailImageSegue"]){

        CollectionViewCell *cell = (CollectionViewCell *)sender;

        NSIndexPath *indexPath = [self.collectionView indexPathForCell:cell];

        NSInteger selectedRow = [selectedItem integerValue];

        NSString *categoryName = [menuText[selectedRow] lowercaseString];

        NSString *iconType = @"_%d@2x.jpg";

        NSString *imageName = [NSString stringWithFormat:@"%@%@", categoryName, iconType];

 

        int i = indexPath.row % 50;

        DetailImageViewController *divc = (DetailImageViewController *)[segue destinationViewController];

       // divc.img =  [UIImage imageNamed:[NSString stringWithFormat:imageName, i]];

 

        divc.img =  [NSString stringWithFormat:@"%d", i];  // ## değerin gönderildiği alan

    }

}

 

DetailImageViewController.h 

#import <UIKit/UIKit.h>

@interface DetailImageViewController : UIViewController 

@property (strong, nonatomic) NSString *img;

- (IBAction)leftButton:(id)sender;

- (IBAction)rightButton:(id)sender;

@property (weak, nonatomic) IBOutlet UILabel *denemeLabel;

@end

DetailImageViewController.m (Butonun bulunduğu ekran)

#import "DetailImageViewController.h"

@interface DetailImageViewController ()

@end

@implementation DetailImageViewController

 

@synthesize img, denemeLabel;

 

- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    NSInteger _img = [img integerValue];

    NSArray *images = [[NSArray alloc] initWithObjects:@"a 1",@"b 2",@"c 3",@"d 4", nil];

    denemeLabel.text = [images objectAtIndex:_img];

}

 

- (IBAction)leftButton:(id)sender {

    NSInteger _img = [img integerValue];

    NSArray *images = [[NSArray alloc] initWithObjects:@"a 1",@"b 2",@"c 3",@"d 4", nil];

    if (_img == 0) {

        denemeLabel.text = @"İlk değer";

    }

    else {

        _img --;

    }

    denemeLabel.text = [images objectAtIndex:_img];

}

 

Cevabınız için şimdiden tekrardan teşekkür ederim. 

picture-6935-1382197169.jpg
fatihturker35
03.11.2013 - 05:20

_img-- yapıyorsunuz ama gördüğüm kadarıyla img hiç değişmiyor. O else içerisinde

img = [NSString stringWithFormat:@"%i", [img integerValue] - 1];

tarzında bir decrement operasyonu daha olması lazım.

picture-6935-1382197169.jpg
fatihturker35
03.11.2013 - 05:16

Merhabalar.

Problemin butondan değil de o img değerinden kaynaklandığını düşünüyorum. Bence o img değeri hep aynı kalıyor, onu static yapmalısınız.

Şu an tam kodu göremediğim için sadece varsayımda bulunuyorum. Kodu tamamen görebilirsem daha fazla yardımcı olabilirim.