2016-03-27 25 views
0

Kullanıcı bir satır seçtiğinde, resim görünümü içeren CutomCells ile bir TableViewCell var, bu satırdaki görüntü başka bir viewController içinde gösterilmelidir. Bu Kontrolörler arasındaki bağlantı, görüntüyü ayarlamaya çalıştığım yer seferi üzerinden yapılır.Başka bir yöntemin ardından segue nasıl çağrılır

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    self.selectedCell = indexPath.row; 
    [self.dataDictionary objectForKey:self.names[indexPath.row]]; 
} 

bu görüntü yansıtılmaz Burada sorun, ilk olarak neden yöntem patlar: - didSelectRowAtIndexPath prepareForSegue ve ancak bundan sonra

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"ImageVC"]) 
    { 
     ImageViewController * ivc = segue.destinationViewController; 
     ivc.myTemporaryImage = [self.dataDictionary objectForKey:self.names[self.selectedCell]]; 
    } 
} 

bir satır I TableViewDelegates yöntemi kullanmak seçilmiş olduğu kullanım tanımlamak için kullanılır. Ama bu emri değiştirmem gerek. Bunun nasıl yapılmasını tavsiye eder misiniz?

Ayrıca ImageViewController programlı olarak, segue kullanarak, doğrudan didSelectRowAtIndexPath yönteminde oluşturmaya çalıştım, ancak bu durumda bu görüntü gösterilmiyor.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self.dataDictionary objectForKey:self.names[indexPath.row]]; 

    ImageViewController * ivc = [[ImageViewController alloc]init]; 
    ivc.myTemporaryImage = [self.savedImages objectForKey:self.names[indexPath.row]]; 

    [self.navigationController pushViewController:ivc animated:YES]; 
} 

Bu sorunu nasıl yönetebilir misiniz?

cevap

1

Hücrede sizin segue doğrudan başvuru kaldırmak zorunda, o zaman, tableView temsilci programlı diyoruz: prepareForSegue içinde Sonra

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    self.selectedCell = indexPath.row; 
    [self performSegueWithIdentifier:@"ImageVC", sender: [self.savedImages objectForKey:self.names[indexPath.row]]] 
} 

:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"ImageVC"]) 
    { 
     ImageViewController * ivc = segue.destinationViewController; 
     ivc.myTemporaryImage = sender; 
    } 
} 
+0

Mükemmel çalışıyor! Çok teşekkürler))) – Melany

1

Sanırım indexPath'i willSelectRowAtIndexPath yönteminde kaydedebilirsiniz.

+0

teşekkür ederim, yaparım şimdi deneyin)) – Melany

+0

Jason, ne yazık ki, bu yöntem uygulandığında, segue yok sayılır - hiç ateşlenmez. – Melany

İlgili konular