2016-03-27 11 views
0

私は、画像ビューを含むCutomCellsを持つTableViewCellを持っています。ユーザーが行を選択すると、この行の画像を別のviewControllerに表示する必要があります。 これらのコントローラ間の接続は、画像を設定しようとするsegueを通して行われます。別のメソッドの後にsegueを呼び出す方法

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

問題をここでその画像が反映されない原因は、まず、方法発射: - didSelectRowAtIndexPath prepareForSegue、唯一その後に1行IはTableViewDelegatesメソッドを使用し、選択された定義する

- (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]]; 
    } 
} 

。しかし、私はこの順序を変更する必要があります。これを行う方法をアドバイスできますか?

また、私はImageViewControllerをプログラムによって、segueを使わずに直接didSelectRowAtIndexPathメソッドで作成しようとしましたが、このイメージではこのケースには表示されません。

- (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]; 
} 

この問題の管理方法を教えてください。

答えて

1

あなたはあなたのセルにあなたのセグエへの直接参照を削除する必要があり、そして、あなたのtableViewデリゲートでプログラムを呼び出す:prepareForSegueで次に

- (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

それは完璧に動作します!どうもありがとう))) – Melany

1

私はあなたwillSelectRowAtIndexPathメソッドでindexPathを保存できると思います。

+0

はありがとう、私は意志今すぐ試してみてください)) – Melany

+0

残念ながら、このメソッドを実装すると、segueは無視されます。これはまったく実行されません。 – Melany

関連する問題