2011-12-15 8 views
0

私はストーリーボードとその使い方に慣れさせるために簡単なアプリケーションを作っています。アプリケーションは、私のAppDelegate.m didFinishLaunchingWithOptionsメソッドを介して生成された最初のテーブルビューでロードされます。これは問題なく動作します。didSelectRowAtIndexPathに応じて新しいビューにコンテンツを表示

次のステージは、自分のテーブルでタップされているセルによって異なります。別のイメージのビューを表示したい場合。以前の人生では、私はこれらのすべてのための新しい.xibファイルを作成し、おそらく100の.xibファイルで、それぞれ異なるイメージを持つようになりました。私はそのビューを表示するために次のコードを使用していました。

if (indexPath.row == 0) 
{ 
    UIViewController *controller = [[UIViewController alloc]initWithNibName:@"AlertViewController" bundle:nil]; 
    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self.navigationController pushViewController:controller animated:YES]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 
else if (indexPath.row == 1) 
{ 
// Show a different view 
} 

は、私はそれは私が必要しかし、多くの意見のオーバーヘッドと創造ニブの多くを必要として、これは完全にそれを行うための間違った方法であることを想像してみてください。私はただ1つの追加のビューを持って、どのビューが選択されているかに応じて関連するイメージをそのビューに渡す必要があると言われました。

これはどうやって行うのかわかりません。私は、テーブルビューにリンクされている私のストーリーボードに追加のビューコントローラを作成しました。テーブルのどの行が選択されているかによって、別のイメージを渡す方法は?

答えて

6

は、あなたがあなたのテーブルに表示される要素を含む配列を持っていると仮定します。このような文字列アイテムを持つ配列(myArrayと呼ばれる)があるかもしれません... item1、item2、item3、item4

現在、これらはあなたのテーブルビューに表示されています。表示名とあなたが

(ITEM1、graphic1)、(ITEM2、graphic2)を表示するグラフィックの名前の両方が含まれている今

、あなたの代わりに、オブジェクト(または構造体)の配列を作成した場合、 (ITEM3、graphic3)、(ITEM4、graphic4)

今すぐあなたのdidSelectRow方法では、あなたは彼らが

selectedItem = [myArray objectAtIndex:indexPath.row]; 

を選択し、その項目を取得することができますそして、それから、あなたはグラフィック

の名前を取得することができます
selectedGraphic = selectedItem.graphicName; 

そして今、あなたの新しいビューを作成し、それをグラフィック

UIViewController *controller = [[UIViewController alloc] ....]; 
controller.graphic = [UIImage imageNamed:selectedGraphic]; 
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[self.navigationController pushViewController:controller animated:YES]; 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

NOTEを与えることができます:私はcontroller.graphicが存在しない実現 - 私はどこに希望をお見せすることでを入れていますあなたのイメージを設定してください。あなたが実際にどのようにこれを行うかはあなたの他のオブジェクトとコントローラーによって決まりますが、うまくいけばこれはあなたにアイデアを与えます。他のコードスニペットも同じです。

0
if (indexPath.row == 0) 
{ 
UIViewController *controller = [[UIViewController alloc]initWithNibName:@"AlertViewController" bundle:nil]; 
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[email protected]"xyz"; 
[email protected]"abc"; 
    . 
    . 
    . 

[self.navigationController pushViewController:controller animated:YES]; 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

次のように行います...

+0

これはラベル用です。私はUIImageView内の画像を渡したいと思います。 –

+0

同じことPaul、controller.second.image = firstview.image – d4ndym1k3

+0

いいえ、動作しません。おそらく私の質問は十分にはっきりしていないでしょう。 –

関連する問題