2012-04-24 5 views
0

ボタンを押すと、テーブルビューが読み込まれます。ユーザがテーブルビューセルを選択すると、didSelectRowAtIndexPathが呼び出されます。その時点で、テーブルビューを閉じて、以前開いていたビューを表示します。私はそれをすべて終えた。しかし、どのようにして、選択したセルのテキストを前のビューのボタンラベルにするのですか?選択したテーブルビューの値を別のビューに戻す方法は?

現在、私は、最初のView Controllerがアクセスできる「最後に選択した」値を持つ(データは静的な)シングルトンデータストアを持っています。 didSelectRowAtIndexPathはそれをうまく設定します。しかし、以前のView Controllerは、テーブルビューが閉じられたときをどのように知っていますか?また、どのボタンを押したかを追跡してどのラベルを変更するのかを知るにはどうすればよいですか?

私はこれが正しいことではないかもしれないと感じています。もしそうなら、もっと良い方法を教えてください。

+0

テーブルはどのように表示されますか?それは別のViewControllerですか?どのようにテーブルを表示していますか?いくつかのコードを含めてください。 –

+0

はい、サブクラス化されたビューコントローラを分離します。サブクラス化されたUITableViewControllerビューでaddSubViewを呼び出すメインビューコントローラによって表示されます。 – Harry

+0

最初のビューでは、あなたは 'MyViewController * view = [[MyViewController alloc] initWith ...];のようなものを持っています。 –

答えて

1

以前のView Controllerに制御を戻すと、viewWillAppearとviewDidAppearが呼び出されます。これらのメソッドの1つを使用して、「最後に選択した」が有効な値を持っているかどうかをチェックすることができます。

もう1つの方法として、didSelectRowAtIndexPathバンドルに以前のコントローラが必要とする情報をアップロードして、NSNotificationをオブジェクト(またはuserinfo辞書)としてポストすることができます。こうすることで、ビューが表示されたときに何かがあるかどうかを判断せずに、通知に直接応答することができます。

編集:上記のaddSubviewの使用についてのコメントを読んだだけで、私はviewWillAppear/viewDidAppearの提案を忘れてNSNotificationに行くと思います。

+0

どのボタンが押されたのかはどう...? – Harry

+0

私はこれらのボタンがどこにあるかわかりません。あなたは表と表のセルを表示するボタンについて言及していますが、複数のボタンの説明は表示されません。 –

+0

あなたは正しいです、申し訳ありません。私はすべてが同じテーブルビューに行く約8つのボタンがあります。私は本当にそれらのために8つの異なるIBActionsを接続したくない - 私はむしろちょうど1つを望む。しかし、私は結果が正しいボタンのラベルに行くことを明らかにしたい。 – Harry

関連する問題