Turkcell | Geleceği Yazanlar

prepareforsegue dictionary nesnesini taşıma

Merhabalar, JSON Data Set' ten gelen datayı NSDictionary' da tutuyorum. UITableView' da göstermek istediğim key' leri gösteriyorum. StoryBoard üzerinden oluşturduğum segue ile DetailView' da yine Data Set içinde yer alan picture link' ini NSString' ten URL' e URL' den Data' ya Data' dan da UIImageView içine atıyorum.

 

Bu son bahsettiğim kısımı gerçekleştiremiyorum. Yani Dictionary içinden gelen Picture Link stringini detailView' a taşıyamadım.

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

DetailView *mvc = [segue destinationViewController];

NSDictionary *postDict = [self.arrPosts objectAtIndex.indexPath.row];

mvc.detailImageLinkString = [[[postDict valueForKeyPath:@"user"]valueForKeyPath:@"image"]valueForKeyPath:@"image"];

}

 

Segue yi storyboard ile bağladığımdan dolayı didSelect metodu işe yaramıyor sanırım. PrepareForSegue' de bir sıkıntı var. Yardımlarınız için teşekkürler...

    +1

    Anıl SÖZERİ

    Detaysoft - 02 Eylül 2014

    Sizin projeniz bende çalışmadı ama istediğiniz yapıya benzer bir örnek kurdum kendi yapınıza entegre edebilirsiniz.

    http://s3.dosya.tc/server27/DJh21m/SegueDataPass.zip.html

    İyi çalışmalar.
     

    +1

    Erkam KÜCET

    Kamu - 02 Eylül 2014

    Anıl Hocam ekte proje dosyasını gönderiyorum. Şöyle bir durum var, storyBoard üzeri,nden segue verildiği zaman sanırım tek yol prepareForsegu metodunu kullanmak. Bazı kaynaklardan okuduğuma göre bu şekilde olması gerekiyor ama ben prepareforsegue de dictionary nesnesini alamıyorum. Müsait bir zamanınızda inceleyebilirseniz sevinirim. Küçük bir proje dosyası halinde zaten. Tekrardan teşiekkür ederim.

     

    Proje Dosyası Linki

    +1

    Anıl SÖZERİ

    Detaysoft - 01 Eylül 2014

    Merhaba,

    Storyboard üzerinde doğru şekilde linklediniz mi? TableView'in cell'i seçiliyken kontrol tuşuna basılı tutup bir sonraki view'i işaretlerseniz didSelect metodu tetiklenmiş olur, siz de içerisinde istediginizi yapabilirsiniz. TableView'in delegate ve datasource bağlantılarını kontrol edin.

    Alternatif bir çözüm;

    ViewController.h

    
    
    
    	#import <UIKit/UIKit.h>
    	#import "SecondViewController.h"
    
    
    	@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>{
    	 NSArray *myArray;
    	 SecondViewController *secondViewController;
    	}
    
    
    	@property (weak, nonatomic) IBOutlet UITableView *myTableView;
    
    
    	@end
    
    
    	

    ViewController.m

    
    
    
    	#import "ViewController.h"
    
    
    	@interface ViewController ()
    
    
    	@end
    
    
    	@implementation ViewController
    
    
    	- (void)viewDidLoad
    	{
    	 [super viewDidLoad];
    	 myArray = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",nil];
    	 // Do any additional setup after loading the view, typically from a nib.
    	}
    
    
    	- (void)didReceiveMemoryWarning
    	{
    	 [super didReceiveMemoryWarning];
    	 // Dispose of any resources that can be recreated.
    	}
    
    
    	- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    	 static NSString *cellIdentifier = @"MyCell";
    	 UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    	 
    	 cell.textLabel.text = myArray[indexPath.row];
    	 
    	 return cell;
    	}
    
    
    	- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    	 secondViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
    	 secondViewController.labelText = myArray[indexPath.row];
    	 [self presentViewController:secondViewController animated:YES completion:nil];
    	}
    
    
    	- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    	 return [myArray count];
    	}
    
    
    	- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    	 return 1;
    	}
    
    
    	@end
    
    
    	

    SecondViewController.h

    
    
    
    	#import <UIKit/UIKit.h>
    
    
    	@interface SecondViewController : UIViewController
    
    
    	@property (weak, nonatomic) IBOutlet UILabel *myLabel;
    	@property (strong, nonatomic) NSString *labelText;
    
    
    	@end
    
    
    	

    SecondViewController.m

    
    
    
    	#import "SecondViewController.h"
    
    
    	@interface SecondViewController ()
    
    
    	@end
    
    
    	@implementation SecondViewController
    
    
    	- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    	{
    	 self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    	 if (self) {
    	 // Custom initialization
    	 }
    	 return self;
    	}
    
    
    	- (void)viewDidLoad
    	{
    	 [super viewDidLoad];
    	 _myLabel.text = _labelText;
    	 // Do any additional setup after loading the view.
    	}
    
    
    	- (void)didReceiveMemoryWarning
    	{
    	 [super didReceiveMemoryWarning];
    	 // Dispose of any resources that can be recreated.
    	}
    
    
    	@end
    
    
    	

    *Storyboard üzerinden ID vermeyi unutmayın.

    İyi çalışmalar.

    Bu soruya cevap vermek için üye olmanız veya giriş yapmanız gerekmektedir.